Почему включение переноса слов для QLabel изменяет макет?

Итак, у меня есть небольшая программа, которую я сделал с помощью Qt Designer, и по большей части все в порядке. Но есть одна неприятная проблема;

У меня есть QLabel, для которого текст иногда слишком длинный, поэтому я хочу сделать перенос текста. Это должно быть простой задачей.

Вот как это выглядит без без переноса слов

введите здесь описание изображения

И это нормально. Но когда текст становится слишком длинным, появляется ужасная полоса прокрутки. Мне это не нужно, поэтому я включаю перенос слов. Но потом происходит следующее:

введите здесь описание изображения

Сначала я подумал, что это просто дерьмо Qt Designer, поэтому скомпилировал и запустил, надеясь, что это исчезнет. Иногда такое случается, поэтому я подумал, что это разумное предположение.

Это не так.

введите здесь описание изображения

Какого черта это происходит?!

РЕДАКТИРОВАТЬ: включение переноса слов вручную в инициализаторе виджета также вызывает такое же поведение, поэтому это не вызвано Qt Designer, это проблема в другом месте. Любая помощь будет принята с благодарностью!

Вот содержимое файла пользовательского интерфейса:

<?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>

person will    schedule 11.07.2013    source источник
comment
Я не понимаю... Ваша проблема связана с ListView? Попробуйте улучшить политику минимального размера и размера ListView. Или... пожалуйста, предоставьте пример кода, который воспроизведет это поведение.   -  person Dmitry Sazonov    schedule 11.07.2013
comment
Откуда эта внешняя полоса прокрутки?   -  person Frank Osterfeld    schedule 11.07.2013
comment
Пожалуйста, опубликуйте содержимое файла пользовательского интерфейса.   -  person Pavel Strakhov    schedule 11.07.2013
comment
Я опубликую файл пользовательского интерфейса позже, когда я загрузлюсь в Unix.   -  person will    schedule 11.07.2013
comment
@FrankOsterfeld внутренняя полоса прокрутки предназначена для представления списка, внешнее представление списка - это панель инструментов. Я бы предпочел просто иметь полосу прокрутки в представлении списка и установить ее размер, чтобы все это поместилось на странице панели инструментов.   -  person will    schedule 11.07.2013
comment
@Riatche - Ну вот.   -  person will    schedule 15.07.2013


Ответы (2)


QLabel в сочетании с переносом слов и макетами дает забавное поведение. См. https://bugreports.qt.io/browse/QTBUG-37673.

person Richy    schedule 10.09.2015

Почему вы вкладываете свои виджеты (QLabel и QListWidget) в QWidget?

Вот почему вы получаете две полосы прокрутки. Один из QListWidget, потому что в нем больше элементов, чем можно просмотреть. И один для родителя QWidget.

Вы должны использовать макеты .

Вот что у вас есть:

введите здесь описание изображения

Должно быть что-то вроде этого:

введите здесь описание изображения

person trompa    schedule 11.07.2013
comment
виджет, внутри которого он вложен, является страницей QToolBox. - person will; 12.07.2013