我正在尝试编写一个QGIS插件并显示一个包含python 3和Qt5的帮助对话框。但是,基于QDialogButtonBox
的默认对话框仅显示两个标准按钮而没有文本。
.ui
文件具有以下内容:
<widget class="QDialogButtonBox" name="button_box" >
<property name="geometry" >
<rect>
<x>30</x>
<y>240</y>
<width>341</width>
<height>32</height>
</rect>
</property>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons" >
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</widget>
我是Qt5 / pyqt的新手。我尝试按照示例添加小部件:
label = QLabel()
label.setText("Help\n instructions: \n")
self.dlg.addWidget(label)
但是我收到了一个错误:AttributeError: 'XXXDialog' object has no attribute 'addWidget'
我的问题是:
如何添加QLabel
或其他窗口小部件(最好使用文本编辑器),可以在对话框的主区域中显示多行文本。我是否必须使用与QDialogButtonBox
不同的基类?
一个可能的解决方案是将QLabel
父级传递给QDialog
,因为在Qt中小部件的坐标是相对于父级的,然后您可以使用move()
更改位置,以将QLabel
的大小调整为其必须使用的内容adjustSize()
:
label = QLabel(self.dlg)
label.setText("Help\n instructions: \n")
label.adjustSize()
label.move(100, 60)
QDialog没有“addWidget”,但它的布局确实如此。
layout = QVBoxLayout()
label = QLabel(self.dlg)
label.setText("Help\n instructions: \n")
layout.addWidget(label);
self.dlg.setLayout(layout);