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

时间:2018-01-15 19:44:55

标签: python pyqt pyqt5 qlabel qdialog

我正在尝试编写一个QGIS插件并显示一个包含python 3和Qt5的帮助对话框。但是,基于QDialogButtonBox的默认对话框仅显示两个标准按钮而没有文本。

https://momentjs.com/

.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不同的基类?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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