200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python PyQt5 QMainWindow类(Qt主窗口框架 主窗口提供了用于构建应用程序用户界面的框架)

python PyQt5 QMainWindow类(Qt主窗口框架 主窗口提供了用于构建应用程序用户界面的框架)

时间:2023-08-26 10:22:14

相关推荐

python PyQt5 QMainWindow类(Qt主窗口框架 主窗口提供了用于构建应用程序用户界面的框架)

https://doc.qt.io/qtforpython/PySide2/QtWidgets/QMainWindow.html?highlight=qmainwindow#PySide2.QtWidgets.QMainWindow

继承关系

细节描述

Qt主窗口框架

主窗口提供了用于构建应用程序用户界面的框架。 Qt具有用于主窗口管理的QMainWindow及其相关类。 QMainWindow有其自己的布局,您可以在其中添加QToolBar,QDockWidget,QMenuBar和QStatusBar。 布局具有可被任何类型的小部件占据的中心区域。 您可以在下面看到布局的图像。

注意:

不支持创建没有中央窗口小部件的主窗口。 您必须有一个中央小部件,即使它只是一个占位符。

创建主窗口组件

中央小部件通常是标准的Qt小部件,例如QTextEdit或QGraphicsView。 自定义窗口小部件也可以用于高级应用程序。 您可以使用setCentralWidget()设置中央窗口小部件。

主窗口具有单个(SDI)或多个(MDI)文档界面。 通过使用QMdiArea作为中央窗口小部件,可以在Qt中创建MDI应用程序。

现在,我们将检查可以添加到主窗口中的每个其他小部件。 我们提供有关如何创建和添加它们的示例。

创建菜单

Qt在QMenu中实现菜单,而QMainWindow将其保留在QMenuBar中。 QAction被添加到菜单,将其显示为菜单项。

您可以通过调用menuBar()将新菜单添加到主窗口的菜单栏中,该菜单返回窗口的QMenuBar,然后使用addMenu()添加菜单。

QMainWindow带有一个默认的菜单栏,但是您也可以使用setMenuBar()自己设置一个菜单栏。 如果您希望实现自定义菜单栏(即不使用QMenuBar小部件),则可以使用setMenuWidget()进行设置。

下面是如何创建菜单的示例:(不是python代码?)

void MainWindow::createMenus(){fileMenu = menuBar()->addMenu(tr("&File"));fileMenu->addAction(newAct);fileMenu->addAction(openAct);fileMenu->addAction(saveAct);

当主窗口接收到上下文菜单事件时,createPopupMenu()函数将创建弹出菜单。 默认实现会生成一个菜单,其中包含来自停靠小部件和工具栏的可检查操作。 您可以为自定义菜单重新实现createPopupMenu()。

创建工具栏

工具栏在QToolBar类中实现。 使用addToolBar()将工具栏添加到主窗口。

您可以通过将工具栏分配给特定的ToolBarArea来控制它们的初始位置。 您可以通过插入工具栏分隔符来分割区域-将其视为文本编辑中的换行符-使用addToolBarBreak()或insertToolBarBreak()即可。 您还可以使用setAllowedAreas()和setMovable()限制用户的放置。

工具栏图标的大小可以使用iconSize()获取。 大小取决于平台; 您可以使用setIconSize()设置固定大小。 您可以使用setToolButtonStyle()更改工具栏中所有工具按钮的外观。

工具栏创建的示例如下:

void MainWindow::createToolBars(){fileToolBar = addToolBar(tr("File"));fileToolBar->addAction(newAct);

创建Dock小部件

Dock小部件在QDockWidget类中实现。 停靠小部件是可以停靠在主窗口中的窗口。 您可以使用addDockWidget()将停靠小部件添加到主窗口。

DockWidgetArea枚举提供了四个停靠小部件区域:左,右,顶部和底部。 您可以使用setCorner()指定哪个停靠窗口小部件区域应占据该区域重叠的角。 默认情况下,每个区域只能包含一行(垂直或水平)停靠小部件,但是如果使用setDockNestingEnabled()启用嵌套,则可以在任一方向添加停靠小部件。

两个底座窗口小部件也可以彼此堆叠。 然后,使用QTabBar选择应显示的窗口小部件。

我们提供一个示例,说明如何创建停靠窗口小部件并将其添加到主窗口:

dockWidget = QDockWidget(tr("Dock Widget"), self)dockWidget.setAllowedAreas(Qt.LeftDockWidgetArea |Qt.RightDockWidgetArea)dockWidget.setWidget(dockWidgetContents)addDockWidget(Qt.LeftDockWidgetArea, dockWidget)

状态栏

您可以使用setStatusBar()设置状态栏,但是第一次调用statusBar()(会返回主窗口的状态栏)时会创建一个状态栏。 有关如何使用它的信息,请参见QStatusBar。

存储状态

QMainWindow可以使用saveState()存储其布局状态; 以后可以使用restoreState()检索它。 它是所存储的工具栏和停靠小部件的位置和大小(相对于主窗口的大小)。

See alsoQMenuBarQToolBarQStatusBarQDockWidgetApplication ExampleDock Widgets ExampleMDI Example SDI Example Menus Example

class QMainWindow([parent=None[, flags=Qt.WindowFlags()]])¶param parentQWidgetparam flagsWindowFlags

构造一个具有给定父对象和指定窗口小部件标志的QMainWindow。

QMainWindow设置Window标志本身,因此将始终被创建为顶级窗口小部件。

参考文章:python PyQt5中文教程☞【第五节】PyQt5事件(Event)和信号(信号槽 Signals & slots)

函数

statusBar()

PySide2.QtWidgets.QMainWindow.statusBar()¶Return typeQStatusBar

返回主窗口的状态栏。 如果状态栏不存在,则此函数创建并返回一个空的状态栏。

See alsosetStatusBar()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。