QScrollArea с пользовательским QFrame

Я использую Qt 5.8. У меня есть свой пользовательский QFrame (назовите его MyQFrame), который состоит из нескольких других QWidgets и может (и будет) содержать другой экземпляр моего пользовательского MyQFrame. Я установил минимальный размер для MyQFrame. MyQFrame использует QGridLayout в качестве макета.

Этот MyQFrame помещается внутри QScrollArea в QTabWidget. QScrollArea настроен на изменение размера (setWidgetResizable(true)). В MyQFrame я пытался установить политику размера для расширения (setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);) но это было безрезультатно.

Вот как (абстракция) я создаю QTabWidget и QScrollArea:

QTabWidget* tabWidget = new QTabWidget();
QScrollArea* firstTab = new QScrollArea();
firstTab->setWidgetResizable(true);
tabWidget->addTab(firstTab, "first tab");
MyQFrame* myFrame1 = new MyQFrame();
firstTab->setWidget(myFrame1);
// ... adding other MyQFrames inside this one using methods in MyQFrame ...

Я не могу заставить работать область прокрутки. Вместо расширения родителей вложенных MyQFrames и добавления полосы прокрутки последний дочерний элемент перекрывается другими MyQFrames. Похоже, мне не хватает чего-то вроде setWidgetResizable для MyQFrames, но этот метод только в QScrollArea. Я понятия не имею, что я должен попробовать сейчас. Я все еще довольно новичок в этом.

Это должно быть более ясно из изображения ниже.

перекрывающихся

0

Решение

Как я уже сказал, я использую QGridLayout в MyQFrame. Я должен был установить ограничение размера для этого макета на минимальный размер, как это: layout->setSizeConstraint(QLayout::SetMinimumSize);, Теперь работает так, как я хотел.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]