Qt mdi应用程序,带有QtDesign的custimo UI

2024-04-25 03:59:24 发布

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

假设我有两个来自Qt的UI文件设计器:mainform.ui存储MDI区域和图列表.ui存储listView。在

现在我想创建一个mdi应用程序,它可以打开许多FiguleList窗口。在

import sys
from PyQt4 import QtGui
#from PyQt4.QtGui import *
from PyQt4 import QtCore, QtGui, uic

class HelloWorldApplication(QtGui.QApplication):
    def __init__(self, args):
        QtGui.QApplication.__init__(self, args)
        self.maindialog = MainUI(None)

class MainUI(QtGui.QMainWindow):
    def __init__(self, parent):
        QtGui.QMainWindow.__init__(self, parent)

        self.ui = uic.loadUi("mainform.ui")
        self.ui.show()

        # create child and show it
        child = self.createFiguresListView()

        # problem here (*)
        child.show()

    def createFiguresListView(self):
        child = FiguresListView()
        self.ui.mdi.addSubWindow(child)
        return child

class FiguresListView(QtGui.QWidget):
    def __init__(self):
        super(FiguresListView, self).__init__()
        self.ui = uic.loadUi("figureslist.ui")


app = HelloWorldApplication(sys.argv)
sys.exit(app.exec_())

但不幸的是,我的子窗口在没有中描述的布局的情况下崩溃了图列表.ui,但其行为类似于mdi子级,但如果将标记为(*)的代码替换为child.ui.显示()它显示实际布局,但不像mdi子级。在

怎么了?在


Tags: fromimportselfchilduiinitdefshow
1条回答
网友
1楼 · 发布于 2024-04-25 03:59:24

您忘记设置ui的父级(另外,如果您没有在Designer中指定最小大小,则需要在此处执行):

class FiguresListView(QtGui.QWidget):
    def __init__(self):
        super(FiguresListView, self).__init__()
        self.ui = uic.loadUi("figureslist.ui", self)
        #self.setMinimumSize(400, 200)

相关问题 更多 >