为什么启用QLabel的自动换行会改变布局?

时间:2013-07-11 12:35:50

标签: qt pyside qlabel

所以我有一个我用Qt Designer制作的小程序,而且在大多数情况下,它完全没问题。但是有一个琐碎的问题;

我有一个QLabel,文本有时太长,所以我想进行文本换行。这应该是一项简单的任务。

这是 no wordwrap

的样子

enter image description here

这很好。但是当文本太长时,它就会出现一个可怕的滚动条。我不想要这个,所以我启用了wordwrap。但后来发生了这种情况:

enter image description here

起初我认为只是Qt Designer是垃圾,所以编译并运行希望它会消失。有时会发生这种情况,所以我认为这是一个合理的假设。

不是。

enter image description here

为什么会发生这种情况?!

编辑:在窗口小部件初始化程序中手动启用自动换行也会导致相同的行为 - 因此它不是由Qt Designer引起的,这是其他地方的问题。任何帮助将不胜感激!

以下是UI文件的内容:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>705</width>
    <height>347</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Title</string>
  </property>
  <property name="windowIcon">
   <iconset resource="icons.qrc">
    <normaloff>:/icons/icons/3/bonus48x48_20.png</normaloff>:/icons/icons/3/bonus48x48_20.png</iconset>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QGridLayout" name="gridLayout" columnstretch="0,1,1">
    <item row="1" column="0">
     <widget class="QLabel" name="label_molecule">
      <property name="text">
       <string>Molecule:</string>
      </property>
     </widget>
    </item>
    <item row="1" column="1">
     <widget class="QLineEdit" name="lineEdit_molecule"/>
    </item>
    <item row="2" column="0" colspan="2">
     <widget class="QToolBox" name="toolBox_modelDetails">
      <property name="currentIndex">
       <number>0</number>
      </property>
      <widget class="QWidget" name="page_isomer">
       <property name="geometry">
        <rect>
         <x>0</x>
         <y>0</y>
         <width>373</width>
         <height>154</height>
        </rect>
       </property>
       <attribute name="label">
        <string>Isomer</string>
       </attribute>
       <layout class="QVBoxLayout" name="verticalLayout">
        <item>
         <widget class="QListWidget" name="listWidget_isomers">
          <property name="alternatingRowColors">
           <bool>true</bool>
          </property>
         </widget>
        </item>
       </layout>
      </widget>
      <widget class="QWidget" name="page_model">
       <property name="geometry">
        <rect>
         <x>0</x>
         <y>0</y>
         <width>357</width>
         <height>231</height>
        </rect>
       </property>
       <attribute name="label">
        <string>Model</string>
       </attribute>
       <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0">
        <item>
         <widget class="QListWidget" name="listWidget_models">
          <property name="sizePolicy">
           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
            <horstretch>0</horstretch>
            <verstretch>0</verstretch>
           </sizepolicy>
          </property>
          <property name="font">
           <font>
            <stylestrategy>PreferDefault</stylestrategy>
           </font>
          </property>
          <property name="lineWidth">
           <number>1</number>
          </property>
          <property name="alternatingRowColors">
           <bool>true</bool>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QLabel" name="label_description">
          <property name="text">
           <string>Howdy!</string>
          </property>
          <property name="wordWrap">
           <bool>true</bool>
          </property>
         </widget>
        </item>
       </layout>
      </widget>
      <widget class="QWidget" name="page_basisSet">
       <property name="geometry">
        <rect>
         <x>0</x>
         <y>0</y>
         <width>373</width>
         <height>154</height>
        </rect>
       </property>
       <attribute name="label">
        <string>Basis Set</string>
       </attribute>
       <layout class="QVBoxLayout" name="verticalLayout_3">
        <item>
         <widget class="QListWidget" name="listWidget_basisSets">
          <property name="alternatingRowColors">
           <bool>true</bool>
          </property>
         </widget>
        </item>
       </layout>
      </widget>
     </widget>
    </item>
    <item row="3" column="0" colspan="3">
     <layout class="QHBoxLayout" name="horizontalLayout_buttons">
      <item>
       <spacer name="horizontalSpacer_buttons">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
      <item>
       <widget class="QPushButton" name="pushButton_save">
        <property name="text">
         <string>Save Input File</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QPushButton" name="pushButton_open">
        <property name="text">
         <string>Open</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
    <item row="1" column="2" rowspan="2">
     <widget class="QGroupBox" name="groupBox_MoleculeViewer">
      <property name="title">
       <string>Molecule</string>
      </property>
     </widget>
    </item>
   </layout>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources>
  <include location="icons.qrc"/>
 </resources>
 <connections/>
</ui>

1 个答案:

答案 0 :(得分:1)

为什么要将小部件(QLabelQListWidget)嵌套到QWidget

这就是你得到两个滚动条的原因。一个来自QListWidget,因为它有更多的项目可以查看。一个用于父QWidget

您应该使用layouts

这就是你所拥有的:

enter image description here

应该是这样的:

enter image description here