PyQt5 MDI子窗口作为类

2024-09-22 16:35:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有菜单和mdiArea的QMainWindow。当我点击一个菜单项时,我需要显示一个qDialog,比如一个datalist。在

我想构建带有datalist的QDialog作为它自己的类;但是,我不知道如何将它作为子窗口附加到mdiArea。有没有可能举一个小例子来说明如何做到这一点?在

import sys
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.uic import loadUi

class CliDataBrowser(QDialog):
    def __init__(self,parent=None):
    super(CliDataBrowser,self).__init__(parent)
    loadUi("CliReportsUI/clidata_browser.ui",self)


class MainApplication(QMainWindow):
    def __init__(self,*args):
        super(MainApplication,self).__init__(*args)
        loadUi("CliReportsUI/clireportmain.ui",self)

    @pyqtSlot()
    def on_mnu_close_triggered(self):
        sys.exit();

    @pyqtSlot()
    def on_mnu_master_triggered(self):
        dataBrowser = CliDataBrowser(self) # <--- Need this to be a mdi subwindow
        dataBrowser.show()


app = QApplication(sys.argv)
mainWin = MainApplication()
mainWin.show()
sys.exit(app.exec_())

在clireportmain.ui公司名称:

^{pr2}$

Tags: fromimportselfuiinitdefsyspyqt5
1条回答
网友
1楼 · 发布于 2024-09-22 16:35:11

您必须使用addSubWindow()方法QMdiArea

@pyqtSlot()
def on_mnu_master_triggered(self):
    dataBrowser = CliDataBrowser(self)
    subWindow = self.mdiArea.addSubWindow(dataBrowser)
    subWindow.show()

相关问题 更多 >