Qtableview in qvboxlayout



你好,我试图嵌入一个qtableview在qvbox布局但我没有设法保持qtableview在qvboxlayout下面的代码给了我两个窗口,我不知道为什么布局。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)

我自己回答,发现我不理解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()

最新更新