Задать вопрос

QT. Почему QScrollArea не растягивается по горизонтали?

Здравствуйте, разрабатываю приложение, создаю окно, в котором есть два QScrollArea, в которых QVBoxLayout, в которые я кодом добавляю виджеты:
for object_data in objects_data:
  widget = QWidget(self)
  new_layout = QVBoxLayout()
  object_file_name = QLabel(object_data['file_name'])
  object_id = QLabel(f"Object_ID: {object_data['object_id']}")
  gridLayout = QGridLayout()
  for image in object_data['images']:
    pixmap = QPixmap()
    image_data = image.getvalue()
    pixmap.loadFromData(image_data)
    pixmap = pixmap.scaled(100, 300)
    label = QLabel()
    label.setPixmap(pixmap)
    gridLayout.addWidget(label, gridLayout.count()//4, gridLayout.count() % 4)  # Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop
    pass
  new_layout.addWidget(object_file_name)
  new_layout.addWidget(object_id)
  new_layout.addLayout(gridLayout)
  widget.setLayout(new_layout)
  layout.addWidget(widget)

Но проблема в том, что когда открывается окно, оно выглядит так:
650ae427e7b52995510991.png
(там QGridLayout с 4х4 изображениями)
Т.е. видно только какую-то часть, появляется вертикальный скролл бар, а мне бы хотелось, чтобы по горизонтали (по вертикали не надо, я же делаю скролл бар) QScrollArea расширилась до минимального размера, при котором видно все 4 столбца.
А нужно так:
650ae5d411f03251564901.png
Пробовал менять SizePolicy на всех объектах внутри и снаружи QScrollArea, в том числе и у него самого, на Expanding, и Minimum, но не получается
структура окна
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>combining_objects</class>
 <widget class="QWidget" name="combining_objects">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>885</width>
    <height>737</height>
   </rect>
  </property>
  <property name="sizePolicy">
   <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
    <horstretch>0</horstretch>
    <verstretch>0</verstretch>
   </sizepolicy>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <layout class="QHBoxLayout" name="horizontalLayout">
     <property name="sizeConstraint">
      <enum>QLayout::SetDefaultConstraint</enum>
     </property>
     <item>
      <widget class="QGroupBox" name="groupBox">
       <property name="sizePolicy">
        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
         <horstretch>0</horstretch>
         <verstretch>0</verstretch>
        </sizepolicy>
       </property>
       <property name="title">
        <string/>
       </property>
       <layout class="QVBoxLayout" name="verticalLayout_2">
        <item>
         <widget class="QScrollArea" name="scrollArea">
          <property name="sizePolicy">
           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
            <horstretch>0</horstretch>
            <verstretch>0</verstretch>
           </sizepolicy>
          </property>
          <property name="horizontalScrollBarPolicy">
           <enum>Qt::ScrollBarAlwaysOff</enum>
          </property>
          <property name="sizeAdjustPolicy">
           <enum>QAbstractScrollArea::AdjustToContents</enum>
          </property>
          <property name="widgetResizable">
           <bool>true</bool>
          </property>
          <property name="alignment">
           <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
          </property>
          <widget class="QWidget" name="scrollAreaWidgetContents">
           <property name="geometry">
            <rect>
             <x>0</x>
             <y>0</y>
             <width>408</width>
             <height>666</height>
            </rect>
           </property>
           <property name="sizePolicy">
            <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
             <horstretch>0</horstretch>
             <verstretch>0</verstretch>
            </sizepolicy>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout_4">
            <item>
             <layout class="QVBoxLayout" name="verticalLayout_first_object">
              <property name="sizeConstraint">
               <enum>QLayout::SetDefaultConstraint</enum>
              </property>
             </layout>
            </item>
           </layout>
          </widget>
         </widget>
        </item>
       </layout>
      </widget>
     </item>
     <item>
      <widget class="QGroupBox" name="groupBox_2">
       <property name="title">
        <string/>
       </property>
       <layout class="QVBoxLayout" name="verticalLayout_3">
        <item>
         <widget class="QScrollArea" name="scrollArea_2">
          <property name="sizePolicy">
           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
            <horstretch>0</horstretch>
            <verstretch>0</verstretch>
           </sizepolicy>
          </property>
          <property name="widgetResizable">
           <bool>true</bool>
          </property>
          <widget class="QWidget" name="scrollAreaWidgetContents_2">
           <property name="geometry">
            <rect>
             <x>0</x>
             <y>0</y>
             <width>407</width>
             <height>666</height>
            </rect>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout_5">
            <item>
             <layout class="QVBoxLayout" name="verticalLayout_second_object"/>
            </item>
           </layout>
          </widget>
         </widget>
        </item>
       </layout>
      </widget>
     </item>
    </layout>
   </item>
   <item>
    <widget class="QDialogButtonBox" name="buttonBox">
     <property name="sizePolicy">
      <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
       <horstretch>0</horstretch>
       <verstretch>0</verstretch>
      </sizepolicy>
     </property>
     <property name="standardButtons">
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
  • Вопрос задан
  • 139 просмотров
Подписаться 2 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы