2015-10-13 58 views
0

你好我試圖嵌入一個qtableview在qvbox佈局 但我沒有設法保持qtableview在qvboxlayout 下面的代碼給了我兩個窗口我不知道爲什麼layout.addwidget沒有按預期行事。qtableview qvboxlayout

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) 
+0

什麼'self.initUI'?你使用QtDesigner和ui文件嗎? – Mel

+0

self.initUI()是菜單(打開,關閉的東西)。我找到了我將在這裏發佈的答案。不管怎麼說,還是要謝謝你 –

回答

0

我回答自己,發現基本聲明我不明白約PyQt的:

有2個步驟使用佈局系統的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()