2013-03-15 3 views
1

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

enter image description here

Я попробовал несколько подходов, в моем первом, я использовал 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.

Всех эти результаты в том же, для меня странного поведения: В любое время я создал этот диалог и призвал шоу(), один из следующих могут произойти:

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

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

+0

Спасибо, что показал ваш пример, я не знал, что вы можете выровнять во время addWidget: D – Saebin

ответ

1

Нашел сам:

setColumnStretch(0,1); 

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

Смежные вопросы