- 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 –
QWidgetflags –
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 – 组合
DockWidgetAreatabPosition –
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 –
QDockWidgetsecond –
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 的获取器。