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