【问题标题】:Applying a layout to a QDockWidget in PyQt5在 PyQt5 中将布局应用于 QDockWidget
【发布时间】:2023-03-06 08:53:01
【问题描述】:

我正在尝试在 PyQt5 中创建一个停靠界面,创建一个包含各种小部件的 BoxLayout,然后将此布局应用于 QDockWidget。

到目前为止,我的方法是:

self.layout = QtWidgets.QBoxLayout(2)
self.layout.addWidget(self.widget_one)
self.layout.addWidget(self.widget_two)
self.docked = QtWidgets.QDockWidget()
self.docked.setLayout(self.layout)
self.docked.show()

我目前收到如下错误:

QWidget::setLayout: Attempting to set QLayout "" on QDockWidget "", 
which already has a layout

但是,在我上面的代码中,我看不到我之前在哪里添加了布局,并且在文档中找不到任何可以帮助我解决此问题的内容。

我的方法哪里出错了?

【问题讨论】:

    标签: python pyqt pyqt5 qdockwidget qlayout


    【解决方案1】:

    QDockWidget 已经有一个默认布局,因此会生成此错误,正确的做法是添加一个空小部件,并在该小部件中放置您想要的布局:

    self.layout = QtWidgets.QBoxLayout(2)
    self.layout.addWidget(self.widget_one)
    self.layout.addWidget(self.widget_two)
    self.docked = QtWidgets.QDockWidget()
    self.dockedWidget = QtWidgets.QWidget()
    self.docked.setWidget(self.dockedWidget)
    self.dockedWidget.setLayout(self.layout)
    self.docked.show()
    

    例子:

    class DockDemo(QMainWindow):
        def __init__(self, parent=None):
            super(DockDemo, self).__init__(parent)
            self.setCentralWidget(QTextEdit())
    
            self.docked = QDockWidget("Dockable", self)
            self.addDockWidget(Qt.LeftDockWidgetArea, self.docked)
            self.dockedWidget = QWidget(self)
            self.docked.setWidget(self.dockedWidget)
            self.setWindowTitle("Dock demo")
            self.dockedWidget.setLayout(QVBoxLayout())
            for i in range(5):
                self.dockedWidget.layout().addWidget(QPushButton("{}".format(i)))
    
    
    if __name__ == '__main__':
        import sys
        app = QApplication(sys.argv)
        ex = DockDemo()
        ex.show()
        sys.exit(app.exec_())
    

    截图:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多