如何将 qlabel 添加到 QDialogBu​​ttonBox UI 文件

Posted

技术标签:

【中文标题】如何将 qlabel 添加到 QDialogBu​​ttonBox UI 文件【英文标题】:how to add qlabel to a QDialogButtonBox UI file 【发布时间】:2018-01-15 19:44:54 【问题描述】:

我正在尝试编写一个 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 不同的基类吗?

【问题讨论】:

你为什么不直接关注QGIS Plugin Tutorial?它以简单的步骤引导您完成整个过程,包括使用 Qt Creator 设计 gui。 【参考方案1】:

一个可能的解决方案是将QLabel作为父级传递给QDialog,因为在Qt中,小部件的坐标是相对于父级的,那么您可以使用move()更改位置,以调整大小QLabel对其内容必须使用adjustSize()

label = QLabel(self.dlg)
label.setText("Help\n instructions: \n")
label.adjustSize()
label.move(100, 60)

【讨论】:

【参考方案2】:

QDialog 没有“addWidget”,但它的布局有。

  layout = QVBoxLayout()
  label = QLabel(self.dlg)
  label.setText("Help\n instructions: \n")
  layout.addWidget(label);
  self.dlg.setLayout(layout);

【讨论】:

以上是关于如何将 qlabel 添加到 QDialogBu​​ttonBox UI 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将 QWidget 添加到 QMenuBar?

如何把QLabel作为一个控件添加到窗口中使用

Qt:如何使用 QSignalMapper 为非标准按钮实现 QDialogBu​​ttonBox ?

如何将图标设置为 QDialogBu​​ttonBox 中的新按钮?

如何在 PyQt5 中将字节数组图像添加到 QLabel

如何获取由 QDialogBu​​ttonBox 创建的 QPushButton 的角色?