Qtableview в qvboxlayout

Здравствуйте. Я пытаюсь встроить qtableview в макет qvbox. Но мне не удается сохранить qtableview в qvbox layout. Приведенный ниже код дает мне два окна. Я не знаю, почему 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 ответ

Я отвечаю сам и нашел основное утверждение, которое я не понял о 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()
Другие вопросы по тегам