0

您好,我正在尝试在 qvbox 布局中嵌入 qtableview 但我无法将 qtableview 保留在 qvboxlayout 下面的代码给了我两个窗口,我不知道为什么 layout.addwidget 的行为不符合预期。

class QMT(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(QMT, self).__init__(parent)
        layout=QVBoxLayout(self)        
        self.view = QtGui.QTableView()
        self.name = QtGui.QLabel("Name:")      
        layout.addWidget(self.view)
        layout.addWidget(self.name)
        self.initUI() #Windows stuff + show()
        self.setLayout(layout)
4

1 回答 1

0

我回答自己,发现我不了解 PyQt 的基本陈述:

在 Qt 中使用布局系统有两个步骤:将小部件组织到布局中,并将布局应用到小部件。

所以这是可行的:

class QMT(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(QMT, self).__init__(parent)

        # Create Qtable view widget
        self.view = QtGui.QTableView(self)

        # Create Canvas for graph
        self.fig=Figure(figsize=(5,5), dpi=100)
        self.canvas=FigureCanvas(self.fig)
        self.graph=self.fig.add_subplot(111)

        #Layout management
        #Initiate splitter (more convenient for end user)
        splitter1 = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter1.addWidget(self.view)
        splitter1.addWidget(self.canvas)

        # Create Horizontal Layout Box
        hbox = QtGui.QHBoxLayout()
        # Add the splitter to the hbox 
        hbox.addWidget(splitter1)

        #initiate widget to be shown
        widget = QtGui.QWidget(self)
        widget.setLayout(hbox)

        #Set widget as central widget
        self.setCentralWidget(widget)

        # Windows & Menu stuff
        self.initUI()
于 2015-10-14T07:17:48.607 回答