0

こんにちは、qvbox レイアウトに qtableview を埋め込もうとしていますが、qvboxlayout に qtableview を保持することができません。以下のコードでは、2 つのウィンドウが表示されます。なぜ 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)
4

1 に答える 1

0

私は自分自身に答えて、PyQtについて理解していない基本的な声明を見つけました:

Qt でレイアウト システムを使用するには 2 つの手順があります。ウィジェットをレイアウトに整理し、レイアウトをウィジェットに適用します。

だからここにうまくいくものがあります:

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()
于 2015-10-14T07:17:48.607 に答える