Как помещать компоненты на ScrollArea, выходящие за пределы окна прокрутки?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 13.07.22 18:48
Оценка:
Есть прокручиваемая область ScrollArea, которая имеет окно прокрутки на окне приложения. Как мне разместить компоненты на этой прокручиваемой области, если месторасположение этих компонентов выходит за границы окна прокрутки?

Я посмотрел

https://doc.qt.io/qt-6/qscrollarea.html

https://www.youtube.com/watch?v=24_z0cYci_Q

https://www.youtube.com/watch?v=QPbkJt2CYvk

но толком объяснения этому случаю не нашёл.
1613 г. = 2024 г.
Re: Как помещать компоненты на ScrollArea, выходящие за пределы окна прокрутки?
От: Anton Batenev Россия https://github.com/abbat
Дата: 13.07.22 22:23
Оценка: +1
Здравствуйте, RussianFellow, Вы писали:

RF> Есть прокручиваемая область ScrollArea, которая имеет окно прокрутки на окне приложения. Как мне разместить компоненты на этой прокручиваемой области, если месторасположение этих компонентов выходит за границы окна прокрутки?


scrollArea->setWidget(yourWidget);


Дальше на `yourWidget` размещаешь дочерние виджеты нужным тебе образом (собственно на твоем видео показана иерархия объектов достаточно наглядно: https://youtu.be/QPbkJt2CYvk?t=98). Как только твой виджет перестает помещаться в ScrollArea, появляются полосы прокрутки.
Re: Как помещать компоненты на ScrollArea, выходящие за пред
От: Igore Россия  
Дата: 14.07.22 08:33
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>Есть прокручиваемая область ScrollArea, которая имеет окно прокрутки на окне приложения. Как мне разместить компоненты на этой прокручиваемой области, если месторасположение этих компонентов выходит за границы окна прокрутки?

Так как нужно по дизайну, не понятен вопрос, делаешь Layout внутри ScrollArea и дабавяешь туда столько элементов сколько нужно.

RF>Я посмотрел

Молодец, а теперь хотелось бы понять и увидеть что именно у тебя не получается, прикрепи содержимое ui файла(или код) в котором у тебя проблема(открыть можно блокнотом).
Как самый просто вариант, открываешь, Qt Designer, создаешь QWidget, и начинаешь там экперементировать, запускать можешь сразу оттуда по Ctrl+R(Form\Preview).
P.S. На какой ОС всё делаешь, какой версией Qt-a, каким компилятором.
Вот тебе мини пример за минуту накидал, выделить, сохранить в файл с расширением .ui, открыть в дизайнере, запустить. Но лучше сделай сам
  Скрытый текст
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Form</class>
 <widget class="QWidget" name="Form">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QScrollArea" name="scrollArea">
     <property name="widgetResizable">
      <bool>true</bool>
     </property>
     <widget class="QWidget" name="scrollAreaWidgetContents">
      <property name="geometry">
       <rect>
        <x>0</x>
        <y>0</y>
        <width>366</width>
        <height>355</height>
       </rect>
      </property>
      <layout class="QVBoxLayout" name="verticalLayout_2">
       <item>
        <widget class="QLineEdit" name="lineEdit"/>
       </item>
       <item>
        <widget class="Line" name="line">
         <property name="orientation">
          <enum>Qt::Horizontal</enum>
         </property>
        </widget>
       </item>
       <item>
        <widget class="QProgressBar" name="progressBar">
         <property name="value">
          <number>24</number>
         </property>
        </widget>
       </item>
       <item>
        <widget class="QTextEdit" name="textEdit"/>
       </item>
       <item>
        <widget class="QRadioButton" name="radioButton">
         <property name="text">
          <string>RadioButton</string>
         </property>
        </widget>
       </item>
       <item>
        <widget class="QPushButton" name="pushButton_3">
         <property name="text">
          <string>PushButton</string>
         </property>
        </widget>
       </item>
       <item>
        <widget class="QDialogButtonBox" name="buttonBox">
         <property name="standardButtons">
          <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
         </property>
        </widget>
       </item>
       <item>
        <widget class="QTreeView" name="treeView"/>
       </item>
       <item>
        <widget class="QRadioButton" name="radioButton_2">
         <property name="text">
          <string>RadioButton</string>
         </property>
        </widget>
       </item>
      </layout>
     </widget>
    </widget>
   </item>
   <item>
    <layout class="QHBoxLayout" name="horizontalLayout">
     <item>
      <spacer name="horizontalSpacer">
       <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">
       <property name="text">
        <string>PushButton</string>
       </property>
      </widget>
     </item>
     <item>
      <widget class="QPushButton" name="pushButton_2">
       <property name="text">
        <string>PushButton</string>
       </property>
      </widget>
     </item>
    </layout>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
Отредактировано 14.07.2022 11:13 Igore . Предыдущая версия . Еще …
Отредактировано 14.07.2022 9:01 Igore . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.