- class QMainWindow#
QMainWindow
类提供了一个主应用程序窗口。更多...简介#
属性#
animatedᅟ
- 是否动画处理档位小部件和工具栏dockNestingEnabledᅟ
- 是否可以嵌套档位dockOptionsᅟ
- QMainWindow 的停靠行为documentModeᅟ
- 是否将选项卡式档位工具栏设置为文档模式iconSizeᅟ
- 此主窗口中工具栏图标的大小tabShapeᅟ
- 用于选项卡式档位工具栏的选项卡形状toolButtonStyleᅟ
- 此主窗口中工具栏按钮的样式unifiedTitleAndToolBarOnMacᅟ
- 是否在 macOS 上使用统一的标题栏和工具栏外观
方法#
def
__init__()
def
addDockWidget()
def
addToolBar()
def
centralWidget()
def
corner()
def
dockOptions()
def
dockWidgetArea()
def
documentMode()
def
iconSize()
def
insertToolBar()
def
isAnimated()
def
isSeparator()
def
menuBar()
def
menuWidget()
def
removeToolBar()
def
resizeDocks()
定义
saveState()
定义
setCorner()
定义
setMenuBar()
定义
statusBar()
定义
tabShape()
虚方法#
槽#
信号#
注意
本文档可能包含自动从 C++ 转换到 Python 的代码片段。我们始终欢迎对代码片段的翻译做出贡献。如果您对翻译有问题,也可以通过创建 https:/bugreports.qt.io/projects/PYSIDE 的工单来告知我们
详细描述#
警告
本节包含从 C++ 自动转换为 Python 的代码片段,可能包含错误。
Qt 主窗口框架#
主窗口提供了一个构建应用程序用户界面的框架。Qt 提供了用于主窗口管理的
QMainWindow
及其 相关类。QMainWindow
有自己的布局,可以在其中添加QToolBar
,QDockWidget
,一个QMenuBar
和一个QStatusBar
。该布局有一个中心区域,可以由任何类型的控件占用。您可以在下面的布局图像中查看。创建主窗口组件#
中心部件通常是一个标准 Qt 组件,如一个
QTextEdit
或一个QGraphicsView
. 对于高级应用程序,也可以使用自定义部件。您可以使用setCentralWidget()
设置中心部件。主窗口具有单个(SDI)或多重(MDI)文档界面。您在 Qt 中通过使用
QMdiArea
作为中心部件来创建 MDI 应用程序。我们将现在检查可以添加到主窗口的所有其他部件。我们将给出如何创建和添加它们的示例。
创建工具栏#
工具栏在
QToolBar
类中实现。您可以使用addToolBar()
向主窗口添加工具栏。您可以通过将它们分配给特定的 Qt::ToolBarArea 来控制工具栏的初始位置。您可以通过插入工具栏分隔符来分割一个区域,这可以想象成文本编辑中的行分隔符 - 使用
addToolBarBreak()
或insertToolBarBreak()
。您还可以使用setAllowedAreas()
和setMovable()
限制用户的位置。可以通过
iconSize()
获取工具栏图标的大小。大小受平台依赖;您可以使用setIconSize()
设置固定大小。您还可以使用setToolButtonStyle()
改变工具栏中所有工具按钮的外观。以下是一个创建工具栏的示例
def createToolBars(self): fileToolBar = addToolBar(tr("File")) fileToolBar.addAction(newAct)
创建浮动窗口组件#
浮动窗口组件在
QDockWidget
类中实现。一个浮动窗口组件是可以附加到主窗口的窗口。您可以使用addDockWidget()
将浮动窗口组件添加到主窗口。Qt::DockWidgetArea 枚举定义了四个浮动窗口组件区域:左、右、上和下。您可以使用
setCorner()
指定哪些浮动窗口组件区域应占据区域重叠的角落。默认情况下,每个区域只能包含一排(垂直或水平)的浮动窗口组件,但是如果您启用了嵌套setDockNestingEnabled()
,浮动窗口组件可以沿任意方向添加。两个浮动窗口组件也可以堆叠在一起。此时将使用
QTabBar
来选择显示哪个小部件。下面是一个创建并添加浮动窗口组件到主窗口的示例
dockWidget = QDockWidget(tr("Dock Widget"), self) dockWidget.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea) dockWidget.setWidget(dockWidgetContents) addDockWidget(Qt.LeftDockWidgetArea, dockWidget)
状态栏#
您可以使用
setStatusBa_or
设置状态栏,但第一次调用statusBar()
(返回主窗口的状态栏)时就会创建一个状态栏。有关如何使用的更多信息,请参阅QStatusBar
。保存状态#
QMainWindow
可以使用saveState()
保存其布局的状态;它可以在稍后使用restoreState()
恢复。它保存了工具栏和浮动窗口组件的位置和大小(相对于主窗口的大小)。- class DockOption#
(继承自
enum.Flag
) 此枚举包含指定QMainWindow
的停靠行为的标志。常量
描述
QMainWindow.AnimatedDocks
等同于
animated
属性。QMainWindow.AllowNestedDocks
等同于
dockNestingEnabled
属性。QMainWindow.AllowTabbedDocks
用户可以将一个停靠小部件“放置”在另一个小部件的“顶部”。这两个小部件被堆叠,并出现一个标签栏来选择哪个是可见的。
QMainWindow.ForceTabbedDocks
每个停靠区域包含一个标签停靠小部件的单个堆栈。换句话说,停靠小部件不能在停靠区域内并排放置。如果设置了此选项,则 AllowNestedDocks 无效。
QMainWindow.VerticalTabs
主窗口两侧的两个垂直停靠区域以垂直方式显示其标签。如果没有设置此选项,所有停靠区域都将在底部显示其标签。隐式包含 AllowTabbedDocks。另请参阅
setTabPosition()
。QMainWindow.GroupedDragging
当拖动停靠窗口的标题栏时,所有与它标签排列的标签也将被拖动。隐式包含 AllowTabbedDocks。如果一些 QDockWidgets 对它们的允许区域有限制,则不起作用。(此枚举值是在 Qt 5.6 中添加的。)
这些选项仅控制停靠小部件在
QMainWindow
中如何停靠。它们不会重新排列停靠小部件以满足指定选项。因此,应在将任何停靠小部件添加到主窗口之前设置。例外情况是 AnimatedDocks 和 VerticalTabs 选项,可以在任何时候设置。
注意
当使用
from __feature__ import true_property
时可以直接使用属性,否则通过访问器函数。- property animatedᅟ: bool#
此属性表示操作停靠小部件和工具栏是否动画。
当工具栏或停靠小部件被拖拽到主窗口上时,主窗口会调整其内容来指示停靠小部件或工具栏将在何处停靠,如果在对应位置释放。设置此属性将导致
QMainWindow
通过平滑动画移动其内容。清除此属性将使内容自动定位到新位置。默认情况下,此属性已设置。如果主窗口包含调整大小或重绘速度较慢的小部件,则可能需要清除此属性。
设置此属性等同于使用
setDockOptions()
方法设置AnimatedDocks
选项。- 属性 dockNestingEnabled : 布尔值#
此属性表示是否可以嵌套停靠。
如果此属性为
false
,停靠区域只能包含一行(水平或垂直)停靠小部件。如果此属性为true
,则停靠小部件占据的区域可以分割,以容纳更多的小部件。只有在包含大量停靠小部件的应用程序中,才需要停靠嵌套。它使用户能够更自由地组织主窗口。然而,当停靠小部件被拖拽到主窗口上时,由于可以有更多放置放置到停靠区域的方式,停靠嵌套会导致更复杂(且不够直观)的行为。
设置此属性等同于使用
setDockOptions()
方法设置AllowNestedDocks
选项。- 属性 dockOptions : 组合 QMainWindow.DockOption#
此属性表示
QMainWindow
的停靠行为。默认值为
AnimatedDocks
|AllowTabbedDocks
。- 属性 documentMode : 布尔值#
此属性表示是否将选项卡化停靠小部件的选项卡栏设置为文档模式。
默认值为false。
另请参阅
此属性存储此主窗口工具栏图标的尺寸。
默认值是GUI样式的默认工具栏图标尺寸。注意,所使用的图标必须至少为此尺寸,因为图标只能缩小。
- 访问函数
- 属性 tabShape: QTabWidget.TabShape#
此属性存储用于标签式停靠小部件的标签形状。
默认值为
圆形
。另请参阅
- 访问函数
- 属性 toolButtonStyle: Qt.ToolButtonStyle#
此属性存储此主窗口工具栏按钮的样式。
要使工具按钮的样式符合系统设置,请将此属性设置为Qt::ToolButtonFollowStyle。在Unix上,将使用桌面环境的用户设置。在其他平台上,Qt::ToolButtonFollowStyle意味着仅图标。
默认值为Qt::ToolButtonIconOnly。
- 属性 unifiedTitleAndToolBarOnMac: bool#
此属性表示窗口是否在macOS上使用统一的标题和工具栏外观。
请注意,与Qt 4相比,Qt 5的实现有一些限制。
不支持在具有OpenGL内容的窗口中使用。这包括QOpenGLWidget。
使用可停靠或可移动的工具栏可能导致绘画错误,不推荐使用。
- __init__([parent=None[, flags=Qt.WindowFlags()]])#
- 参数:
parent –
QWidget
flags –
WindowType
组合
使用指定的
parent
和flags
构造一个QMainWindow
。QMainWindow
会自己设置Qt::Window标志,因此总会作为一个顶层小部件创建。- addDockWidget(area, dockwidget)#
- 参数:
区域 –
DockWidgetArea
浮动工具窗口 –
QDockWidget
将指定的
浮动工具窗口
添加到指定的区域
。- addDockWidget(area, dockwidget, orientation)
- 参数:
区域 –
DockWidgetArea
浮动工具窗口 –
QDockWidget
方向 –
Orientation
将
浮动工具窗口
添加到给定的区域
中,按照方向
指定的方向。这是一个重载函数。
相当于调用
addToolBar
(Qt::TopToolBarArea,toolbar
)- addToolBar(area, toolbar)
- 参数:
区域 –
ToolBarArea
工具栏 –
QToolBar
将
工具栏
添加到主窗口中指定的区域
。该工具栏
被放置在当前工具栏块(即行)的末尾。如果主窗口已经管理了工具栏
,则它将只将该工具栏移动到区域
。- addToolBar(title)
- 参数:
标题 – str
- 返回类型:
这是一个重载函数。
创建一个
QToolBar
对象,将其窗口标题设置为title
,并将其插入到顶部工具栏区域。另请参阅
- addToolBarBreak([area=Qt.TopToolBarArea])#
- 参数:
区域 –
ToolBarArea
在指定的
area
中添加一个工具栏中断,在所有其他对象之后。返回主窗口的中心部件。如果中心部件尚未设置,此函数返回
None
。另请参阅
返回占指定
corner
的停靠部件区域。另请参阅
返回一个弹出菜单,其中包含对主窗口中存在的工具栏和停靠部件的可选条目。如果没有可用的工具栏和停靠部件,则此函数返回
None
。默认情况下,当用户激活上下文菜单(通常通过在工具栏或停靠部件上右键单击)时,主窗口会调用此函数。
如果您想创建一个自定义弹出菜单,则重新实现此函数并返回一个新创建的弹出菜单。弹出菜单的所有权将转移到调用者。
- dockOptions()#
- 返回类型:
DockOption
的组合
另请参阅
属性
dockOptionsᅟ
的获取器。- dockWidgetArea(dockwidget)#
- 参数:
浮动工具窗口 –
QDockWidget
- 返回类型:
返回
dockwidget
的 Qt::DockWidgetArea。如果dockwidget
未添加到主窗口中,则此函数返回Qt::NoDockWidgetArea
。另请参阅
addDockWidget()
splitDockWidget()
DockWidgetArea
- documentMode()#
- 返回类型:
bool
另请参阅
属性
documentMode
的获取器。- iconSize()#
- 返回类型:
另请参阅
属性
iconSize
的获取器。当窗口中使用的图标尺寸发生更改时发出此信号。新的图标尺寸通过
iconSize
传递。您可以将此信号连接到其他组件以帮助保持应用程序的一致外观。
另请参阅
将
toolbar
插入由before
工具栏占据的区域,使其出现在它之前。例如,在正常的从左到右布局操作中,这意味着在水平工具栏区域中,toolbar
将出现在由before
指定的工具栏的左侧。在由
before
指定的工具栏之前插入一个工具栏断点。- isAnimated()#
- 返回类型:
bool
属性
animatedᅟ
的获取器。- isDockNestingEnabled()#
- 返回类型:
bool
属性
dockNestingEnabledᅟ
的获取器。- 返回类型:
警告
本节包含从 C++ 自动转换为 Python 的代码片段,可能包含错误。
返回主窗口的菜单栏。如果菜单栏不存在,此函数将创建并返回一个空的菜单栏。
如果你想要Mac应用程序中的所有窗口共享同一个菜单栏,不要使用此函数来创建它,因为在此创建的菜单栏将以
QMainWindow
作为其父类。相反,你必须创建一个没有父类的菜单栏,然后你可以在所有的Mac窗口中共享它。以下是如何创建一个没有父类的菜单栏:menuBar = QMenuBar(None)
另请参阅
- 返回类型:
返回主窗口的菜单栏。如果菜单栏尚未构造,此函数将返回null。
另请参阅
- removeDockWidget(dockwidget)#
- 参数:
浮动工具窗口 –
QDockWidget
从主窗口布局中移除并隐藏
dockwidget
。请注意,dockwidget
不会 被删除。从主窗口布局中移除并隐藏
toolbar
。请注意,toolbar
不会 被删除。移除在由
before
指定的工具栏之前插入的工具栏中断。- resizeDocks(docks, sizes, orientation)#
- 参数:
停靠 – QDockWidget 的列表
大小 – 整数列表
方向 –
Orientation
警告
本节包含从 C++ 自动转换为 Python 的代码片段,可能包含错误。
将列表
docks
中的停靠小部件大小调整为其在列表sizes
中对应的大小。如果orientation
是 Qt::Horizontal,则调整宽度,否则调整停靠小部件的高度。大小将被调整,以确保最大和最小大小得到尊重,并且QMainWindow
本身不会调整大小。任何额外或缺失的空间将根据大小的相对权重分配给小部件。示例
resizeDocks({blueWidget, yellowWidget}, {20 , 40}, Qt.Horizontal)
如果蓝色和黄色小部件在相同级别嵌套,它们将被调整大小,使得 yellowWidget 是 blueWidget 的一半大
如果某些小部件在标签中分组,则每个组应指定一个小部件。列表中未包含的小部件可能会根据约束进行更改。
- restoreDockWidget(dockwidget)#
- 参数:
浮动工具窗口 –
QDockWidget
- 返回类型:
bool
如果
dockwidget
在调用restoreState()
之后被创建,则恢复它的状态。如果状态已恢复,返回true
;否则返回false
。- restoreState(state[, version=0])#
- 参数:
状态 –
QByteArray
版本 – int
- 返回类型:
bool
警告
本节包含从 C++ 自动转换为 Python 的代码片段,可能包含错误。
恢复主窗口工具栏和停靠小部件的
state
。还会恢复角落设置。将version
号码与存储在state
中的号码进行比较。如果不匹配,则主窗口的状态将保持不变,并且此函数返回false
;否则,状态将得到恢复,并且此函数返回true
。要恢复使用 QSettings 保存的几何形状,可以使用以下代码
def readSettings(self): settings = QSettings("MyCompany", "MyApp") restoreGeometry(settings.value("myWidget/geometry").toByteArray()) restoreState(settings.value("myWidget/windowState").toByteArray())
- saveState([version=0])#
- 参数:
版本 – int
- 返回类型:
警告
本节包含从 C++ 自动转换为 Python 的代码片段,可能包含错误。
保存当前主窗口工具栏和停靠窗口的状态。这包括可以使用
setCorner()
设置的角设置。版本号作为数据的一部分存储。objectName 属性用于识别每个
QToolBar
和QDockWidget
。你应该确保每个添加到QMainWindow
中的QToolBar
和QDockWidget
的此属性是唯一的。要恢复保存的状态,将返回值和
version
号传递给restoreState()
。为了在窗口关闭时保存几何形状,您可以实现一个类似这样的关闭事件:
def closeEvent(self, event): settings = QSettings("MyCompany", "MyApp") settings.setValue("geometry", saveGeometry()) settings.setValue("windowState", saveState()) QMainWindow.closeEvent(event)
- setAnimated(enabled)#
- 参数:
enabled – bool
另请参阅
设置属性
animated
的值。将指定的
widget
设置为主窗口的中央控件。注意:
QMainWindow
会在适当的时候接管widget
指针并删除它。另请参阅
- setCorner(corner, area)#
- 参数:
corner –
Corner
区域 –
DockWidgetArea
设置给定的停靠小部件
area
以占据指定的corner
。另请参阅
- setDockNestingEnabled(enabled)#
- 参数:
enabled – bool
属性
dockNestingEnabled
的设置器。- setDockOptions(options)#
- 参数:
options –
DockOption
的组合
另请参阅
属性
dockOptions
的设置器。- setDocumentMode(enabled)#
- 参数:
enabled – bool
另请参阅
属性
documentMode
的设置器。属性
iconSize
的设置器。将主窗口的菜单栏设置为
menuBar
。注意:
QMainWindow
将接管menuBar
指针并在适当的时候删除它。另请参阅
将主窗口的菜单栏设置为
menuBar
。QMainWindow
将在适当的时候接管menuBar
指针并删除它。另请参阅
- setStatusBar(statusbar)#
- 参数:
状态栏 –
QStatusBar
将主窗口的状态栏设置为
statusbar
。将状态栏设置为
None
将从主窗口中移除它。请注意,QMainWindow
撤走了statusbar
指针的所有权,并在适当的时候删除它。另请参阅
- setTabPosition(areas, tabPosition)#
- 参数:
areas – 组合
DockWidgetArea
tabPosition –
TabPosition
将指定的
areas
框件选项卡位置设置为指定的tabPosition
。默认情况下,所有框架区域在其底部显示其选项卡。属性
tabShapeᅟ
的设置器。- setToolButtonStyle(toolButtonStyle)#
- 参数:
toolButtonStyle –
ToolButtonStyle
另请参阅
属性
toolButtonStyleᅟ
的设置器。- setUnifiedTitleAndToolBarOnMac(set)#
- 参数:
set – bool
属性
unifiedTitleAndToolBarOnMacᅟ
的设置器。- splitDockWidget(after, downdocument, orientation)#
- 参数:
after –
QDockWidget
浮动工具窗口 –
QDockWidget
方向 –
Orientation
将第一个停靠部件所覆盖的区域分为两部分,将第一个停靠部件移动到第一部分,将第二个停靠部件移动到第二部分。
orientation
指定了空间的划分方式:Qt::Horizontal分割将第二个停靠部件放置在第一个停靠部件的右侧;Qt::Vertical分割将第二个停靠部件放置在第一个停靠部件下方。注意:如果第一个停靠部件目前位于标签停靠区域内,第二个停靠部件将被添加为新标签,而不是作为第一个停靠部件的邻居。这是因为单个标签只能包含一个停靠部件。
注意:Qt::LayoutDirection会影响分割区域两部分中停靠部件的顺序。当启用了从右到左的布局方向时,停靠部件的放置顺序将会反转。
- statusBar()#
- 返回类型:
返回主窗口的状态栏。如果状态栏不存在,此函数将创建并返回一个空状态栏。
另请参阅
- tabPosition(area)#
- 参数:
区域 –
DockWidgetArea
- 返回类型:
返回区域
area
的标签位置。- tabShape()#
- 返回类型:
另请参阅
属性
tabShape
的获取器。- tabifiedDockWidgetActivated(downdocument)#
- 参数:
停靠小部件 –
QDockWidget
当选中对齐的停靠小部件时,此信号被发出。激活的停靠小部件通过
dockWidget
传递。- tabifiedDockWidgets(dockwidget)#
- 参数:
浮动工具窗口 –
QDockWidget
- 返回类型:
是一个 QDockWidget 列表
返回与
dockwidget
对齐的停靠小部件。另请参阅
- tabifyDockWidget(first, second)#
- 参数:
first –
QDockWidget
second –
QDockWidget
将
second
停靠小部件移动到first
停靠小部件的顶部,在主窗口中创建一个带有标签的停靠区域。从主窗口中删除中心小部件。
删除的小部件的所有权传递给调用者。
返回
toolbar
的 Qt::ToolBarArea。如果toolbar
尚未添加到主窗口中,则此函数返回 Qt::NoToolBarArea。另请参阅
addToolBar()
addToolBarBreak()
ToolBarArea
-
toolBarBreak(toolbar)
- 参数:
工具栏 –
QToolBar
- 返回类型:
bool
返回在 toolbar
之前是否有一个工具栏中断。
- toolButtonStyle()#
- 返回类型:
另请参阅
属性 toolButtonStyle
的获取器。
- toolButtonStyleChanged(toolButtonStyle)#
- 参数:
toolButtonStyle –
ToolButtonStyle
当窗口中工具按钮使用的设计风格变化时,会发射此信号。新的风格通过 toolButtonStyle
传递。
您可以将此信号连接到其他组件以帮助保持应用程序的一致外观。
另请参阅
- unifiedTitleAndToolBarOnMac()#
- 返回类型:
bool
属性 unifiedTitleAndToolBarOnMac
的获取器。