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

Как правильно добавить виджеты в два QVBoxLayout, которые находятся в QScrollArea, в моем окне приложения?
Изображение к вопросу
Изображение к вопросу
  • 20 сентября 2023 г. 12:37
Ответы на вопрос 1
QScrollArea по умолчанию имеет политику растягивания содержимого только в вертикальном направлении. Если вы хотите, чтобы ваши виджеты растягивались и по горизонтали, вам нужно установить политику растягивания для содержимого QScrollArea в обоих направлениях. Вы можете сделать это, добавив следующий код:

```python
scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
```

Чтобы правильно добавить виджеты в два QVBoxLayout, вы можете сначала создать два QVBoxLayout. Затем, вы можете создать виджет QWidget, установить каждый QVBoxLayout как свой layout и добавить этот виджет в QScrollArea. Вот пример кода:

```python
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QScrollArea, QLabel

app = QApplication([])
widget = QWidget()

layout1 = QVBoxLayout()
layout2 = QVBoxLayout()

# Добавление виджетов в layout1 и layout2
# ...

scroll_area = QScrollArea()
scroll_widget = QWidget()
scroll_widget.setLayout(layout1)  # Установка layout1 как layout для scroll_widget
scroll_area.setWidget(scroll_widget)
scroll_area.setWidgetResizable(True)  # Устанавливаем возможность растягивать содержимое QScrollArea

main_layout = QVBoxLayout(widget)
main_layout.addWidget(scroll_area)

widget.show()
app.exec()
```

Вы можете повторить те же шаги для layout2, чтобы добавить его второй раз в QScrollArea.
Похожие вопросы