0

Qt Designer から 2 つの UI ファイルがあるとします。

ここで、多数の figureList ウィンドウを開くことができる mdi アプリケーションを作成したいと思います。

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_())

しかし、残念ながら、私の子ウィンドウは、figureslist.ui に記述されたレイアウトなしで折りたたまれて表示されますが、mdi の子のように動作しますが、(*) でマークされたコードを child.ui.show() に置き換えると、実際のレイアウトは表示されますが、動作しません。 mdi子のように。

どうしたの?

4

1 に答える 1

0

UI の親を設定するのを忘れました (また、Designer で最小サイズを指定しなかった場合は、ここで指定する必要があります):

class FiguresListView(QtGui.QWidget):
    def __init__(self):
        super(FiguresListView, self).__init__()
        self.ui = uic.loadUi("figureslist.ui", self)
        #self.setMinimumSize(400, 200)
于 2013-02-10T21:26:58.990 に答える