gpt4 book ai didi

python - 在 PyQt5 中将布局应用于 QDockWidget

转载 作者:太空宇宙 更新时间:2023-11-03 14:49:35 25 4
gpt4 key购买 nike

我正在尝试在 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

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

我的方法哪里出了问题?

最佳答案

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

截图:

enter image description here

关于python - 在 PyQt5 中将布局应用于 QDockWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46830464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com