python PyQt5 QMainWindow类(Qt主窗口框架,主窗口提供了用于构建应用程序用户界面的框架)
https://doc.qt.io/qtforpython/PySide2/QtWidgets/QMainWindow.html?highlight=qmainwindow#PySide2.QtWidgets.QMainWindow
繼承關(guān)系
細(xì)節(jié)描述
Qt主窗口框架
主窗口提供了用于構(gòu)建應(yīng)用程序用戶界面的框架。 Qt具有用于主窗口管理的QMainWindow及其相關(guān)類。 QMainWindow有其自己的布局,您可以在其中添加QToolBar,QDockWidget,QMenuBar和QStatusBar。 布局具有可被任何類型的小部件占據(jù)的中心區(qū)域。 您可以在下面看到布局的圖像。
注意:
不支持創(chuàng)建沒有中央窗口小部件的主窗口。 您必須有一個(gè)中央小部件,即使它只是一個(gè)占位符。
創(chuàng)建主窗口組件
中央小部件通常是標(biāo)準(zhǔn)的Qt小部件,例如QTextEdit或QGraphicsView。 自定義窗口小部件也可以用于高級(jí)應(yīng)用程序。 您可以使用setCentralWidget()設(shè)置中央窗口小部件。
主窗口具有單個(gè)(SDI)或多個(gè)(MDI)文檔界面。 通過使用QMdiArea作為中央窗口小部件,可以在Qt中創(chuàng)建MDI應(yīng)用程序。
現(xiàn)在,我們將檢查可以添加到主窗口中的每個(gè)其他小部件。 我們提供有關(guān)如何創(chuàng)建和添加它們的示例。
創(chuàng)建菜單
Qt在QMenu中實(shí)現(xiàn)菜單,而QMainWindow將其保留在QMenuBar中。 QAction被添加到菜單,將其顯示為菜單項(xiàng)。
您可以通過調(diào)用menuBar()將新菜單添加到主窗口的菜單欄中,該菜單返回窗口的QMenuBar,然后使用addMenu()添加菜單。
QMainWindow帶有一個(gè)默認(rèn)的菜單欄,但是您也可以使用setMenuBar()自己設(shè)置一個(gè)菜單欄。 如果您希望實(shí)現(xiàn)自定義菜單欄(即不使用QMenuBar小部件),則可以使用setMenuWidget()進(jìn)行設(shè)置。
下面是如何創(chuàng)建菜單的示例:(不是python代碼?)
void MainWindow::createMenus() {fileMenu = menuBar()->addMenu(tr("&File"));fileMenu->addAction(newAct);fileMenu->addAction(openAct);fileMenu->addAction(saveAct);當(dāng)主窗口接收到上下文菜單事件時(shí),createPopupMenu()函數(shù)將創(chuàng)建彈出菜單。 默認(rèn)實(shí)現(xiàn)會(huì)生成一個(gè)菜單,其中包含來自停靠小部件和工具欄的可檢查操作。 您可以為自定義菜單重新實(shí)現(xiàn)createPopupMenu()。
創(chuàng)建工具欄
工具欄在QToolBar類中實(shí)現(xiàn)。 使用addToolBar()將工具欄添加到主窗口。
您可以通過將工具欄分配給特定的ToolBarArea來控制它們的初始位置。 您可以通過插入工具欄分隔符來分割區(qū)域-將其視為文本編輯中的換行符-使用addToolBarBreak()或insertToolBarBreak()即可。 您還可以使用setAllowedAreas()和setMovable()限制用戶的放置。
工具欄圖標(biāo)的大小可以使用iconSize()獲取。 大小取決于平臺(tái); 您可以使用setIconSize()設(shè)置固定大小。 您可以使用setToolButtonStyle()更改工具欄中所有工具按鈕的外觀。
工具欄創(chuàng)建的示例如下:
void MainWindow::createToolBars() {fileToolBar = addToolBar(tr("File"));fileToolBar->addAction(newAct);創(chuàng)建Dock小部件
Dock小部件在QDockWidget類中實(shí)現(xiàn)。 停靠小部件是可以停靠在主窗口中的窗口。 您可以使用addDockWidget()將停靠小部件添加到主窗口。
DockWidgetArea枚舉提供了四個(gè)停靠小部件區(qū)域:左,右,頂部和底部。 您可以使用setCorner()指定哪個(gè)停靠窗口小部件區(qū)域應(yīng)占據(jù)該區(qū)域重疊的角。 默認(rèn)情況下,每個(gè)區(qū)域只能包含一行(垂直或水平)停靠小部件,但是如果使用setDockNestingEnabled()啟用嵌套,則可以在任一方向添加停靠小部件。
兩個(gè)底座窗口小部件也可以彼此堆疊。 然后,使用QTabBar選擇應(yīng)顯示的窗口小部件。
我們提供一個(gè)示例,說明如何創(chuàng)建停靠窗口小部件并將其添加到主窗口:
dockWidget = QDockWidget(tr("Dock Widget"), self) dockWidget.setAllowedAreas(Qt.LeftDockWidgetArea |Qt.RightDockWidgetArea) dockWidget.setWidget(dockWidgetContents) addDockWidget(Qt.LeftDockWidgetArea, dockWidget)狀態(tài)欄
您可以使用setStatusBar()設(shè)置狀態(tài)欄,但是第一次調(diào)用statusBar()(會(huì)返回主窗口的狀態(tài)欄)時(shí)會(huì)創(chuàng)建一個(gè)狀態(tài)欄。 有關(guān)如何使用它的信息,請(qǐng)參見QStatusBar。
存儲(chǔ)狀態(tài)
QMainWindow可以使用saveState()存儲(chǔ)其布局狀態(tài); 以后可以使用restoreState()檢索它。 它是所存儲(chǔ)的工具欄和停靠小部件的位置和大小(相對(duì)于主窗口的大小)。
構(gòu)造一個(gè)具有給定父對(duì)象和指定窗口小部件標(biāo)志的QMainWindow。
QMainWindow設(shè)置Window標(biāo)志本身,因此將始終被創(chuàng)建為頂級(jí)窗口小部件。
參考文章:python PyQt5中文教程?【第五節(jié)】PyQt5事件(Event)和信號(hào)(信號(hào)槽 Signals & slots)
函數(shù)
statusBar()
PySide2.QtWidgets.QMainWindow.statusBar()? Return type QStatusBar返回主窗口的狀態(tài)欄。 如果狀態(tài)欄不存在,則此函數(shù)創(chuàng)建并返回一個(gè)空的狀態(tài)欄。
See alsosetStatusBar()總結(jié)
以上是生活随笔為你收集整理的python PyQt5 QMainWindow类(Qt主窗口框架,主窗口提供了用于构建应用程序用户界面的框架)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python PyQt5 sender(
- 下一篇: python PyQt5 slot插槽(