Как расположить элементы в QGridLayout, как показано? - PullRequest
15 голосов
/ 02 марта 2012
------------  ------
|          |  | 2  |
|          |  |    |
|     1    |  ------
|          |  ------  
|          |  |  3 |
------------  ------

Как организовать QGridLayout, как указано выше?

Я пытался:

QGridLayout *layout = new QGridLayout();
centralWidget->setLayout (layout);

layout->addWidget (objOne, 0, 0);
layout->addWidget (objTwo, 0, 1);
layout->addWidget (objThree, 1, 1);

, но не смог.

Ответы [ 2 ]

23 голосов
/ 02 марта 2012

Проверьте документацию addWidget.Вы можете предоставить rowSpan и columnSpan

QGridLayout *layout = new QGridLayout();
centralWidget->setLayout (layout);

layout->addWidget (objOne, 0, 0, -1, 1);
layout->addWidget (objTwo, 0, 1, 1, 1);
layout->addWidget (objThree, 1, 1, 1, 1);

Заметьте, однако, что гораздо проще создать нужный макет с помощью QtDesigner.Проверьте эту Qt страницу документации для более подробной информации

18 голосов
/ 02 марта 2012

Является ли каким-то образом обязательным для вас использование QGridLayout по некоторым причинам?Для таких простых макетов мне проще использовать комбинацию из одного QHBoxLayout и одного QVBoxLayout.

QVBoxLayout* vlayout = new QVBoxLayout();
vlayout->addWidget(objTwo);
vlayout->addWidget(objThree);

QHBoxLayout* hlayout = new QHBoxLayout();
hlayout->addWidget(objOne);
hlayout->addLayout(vlayout);
...