Проблема со вставкой виджетов в QGridLayout

Я попытался создать виджет, имеющий следующий макет:

введите описание изображения здесь

Я попробовал несколько подходов, в моем первом я использовал 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 (), может произойти одно из следующего:

  1. все предметы были нарисованы так, как я хотел.
  2. флажки слева были показаны, но кнопки справа покрывали описание флажка
  3. флажки слева были правильными, но я не смог найти кнопки.
  4. кнопки занимали все пространство, и вы не могли видеть никаких флажков вообще.

Может кто-нибудь дать мне подсказку, что я сделал не так, или показать мне способ создать макет, который я нарисовал на изображении?

1

Решение

Нашел это сам:

setColumnStretch(0,1);

скучал. Добавленные виджеты занимали все пространство в ячейке, но ячейка никогда не увеличивалась.

1

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

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

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