qvboxlayout中的Qtableview

时间:2015-10-13 12:34:16

标签: pyqt4 qtableview qvboxlayout

您好我正在尝试在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)

1 个答案:

答案 0 :(得分: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()