Я попытался создать виджет, имеющий следующий макет:
Я попробовал несколько подходов, в моем первом я использовал QVBoxLayout, к которому я добавил разные виджеты, которые использовали QGridLayout (так что я получал бы горизонтальное изменение размера так, как я хочу).
//pseudo code, just to show what I tried...
myHeaderWidget::myHeaderWidget() {
QGridLayout* layout = new QGridLayout;
layout->addWidget(new QCheckBox(), 0, 0, 1, -1, Qt::AlignRight | Qt::AlignTop);
setLayout(layout);
}oneOfMyOtherWidgets::oneOfMyOtherWidgets() {
QGridLayout* layout = new QGridLayout;
layout->addWidget(new QCheckBox(), 0, 0, 1, 1, Qt::AlignLeft | Qt::AlignTop);
layout->addWidget(new QPushButton(), 0, 1, 1, -1, Qt::AlignLeft | Qt::AlignTop);
setLayout(layout);
}mydialog::mydialog() {
QVBoxLayout* layout = new QVBoxLayout;
setLayout(layout);
layout->addWidget(new myHeaderWidget, 0, Qt::AlignRight);
//here was the third widget containing Descr1 and Description2, as
//drawn in image above
layout->addWidget(new oneOfMyOtherWidgets, 0, Qt::AlignLeft);
}
Второй подход заключался в использовании QGridWidget в качестве макета для MyDialog, и мой третий подход состоял в том, чтобы добавить все эти элементы в один и тот же QGridWidget MyDialog.
Все эти результаты в том же, для меня странном, поведении:
В любое время, когда я создал этот диалог и вызвал show (), может произойти одно из следующего:
Может кто-нибудь дать мне подсказку, что я сделал не так, или показать мне способ создать макет, который я нарисовал на изображении?
Нашел это сам:
setColumnStretch(0,1);
скучал. Добавленные виджеты занимали все пространство в ячейке, но ячейка никогда не увеличивалась.
Других решений пока нет …