Qt компоновка элементов на форме
Не разобраться мне в компоновке элементов в QtCreator. Не пойму, использую компоновки, вроде бы и хорошо, а вроде бы и нет. Есть у меня на форме VerticalLayout, в него добавлены элементы. Чтобы в VerticalLayout разместить элементы в одну строку, добавил в него HorizontalLayout и в сам HorizontalLayout добавил необходимые элементы, вот что у меня получилось:

Кнопка "Обновить", мне нужна справа, для этого добавил HorizontalSpacer. Но вот сама кнопка обрезана под длину строки, не удобно... Хотелось бы сделать её немного пошире, сам HorizontalLayout этого не позволяет сделать. Как мне сделать кнопку шире?
И второе:
В этом же VerticalLayout, есть QTableWidget. В QTableWidget данные загружаются продолжительное время. Хочу на время загрузки QTableWidget скрыть и на месте QTableWidget показать QProgressBar. Когда скрываю QTableWidget (setVisible(false)), этот VerticalLayout все что в нем есть, равномерно распределяет по вертикали, этого мне не нужно. Мне надо, что бы QTableWidget исчез, а все остальное оставалось на своих местах!
Ответы (2 шт):
- Размер кнопки, варианты решения
- Самое простое решение: добавить пробелов вокруг строки
" Обновить " - Можно установить свойство
minimumSizeу кнопки - Настроить для каждого элемента в layout-е stretch factor(в дизайнере настраивается в свойстве
layoutStretch)
- Самое простое решение: добавить пробелов вокруг строки
- Центрирование
progressBar:- Поместить
progressBarна отдельныйwidget - туда же поместить
tableWidget - у
widgetвыставить свойствоsizePolicy/Вертикальная == Expanding - назначить вертикальный компоновщик
- Поместить
Вытащить кнопку из компоновки, в её свойствах найти minimumSize и поставить ширину кнопки, меньше которой она становиться не будет. Обратное можно провернуть и с maximumSize.
Создать QStackedWidget с двумя страницами, где на первой создать прогресс-бар, а на второй Ваш QTableWidget. Ну и при заполнении прогресс-бара (сигнал valueChanged(int) и член-функция maximum()) переключать на вторую страницу (setCurrentIndex(int) у QTableWidget).


