Вот как нарисовать кнопку, которая охватывает 2 столбца:
#include <QtGui>
int main(int argv, char **args)
{
QApplication app(argv, args);
QPushButton *foo = new QPushButton("foo");
QPushButton *bar = new QPushButton("bar");
QPushButton *baz = new QPushButton("baz");
QGridLayout *layout = new QGridLayout();
layout->addWidget(foo, 0, 0);
layout->addWidget(bar, 0, 1);
layout->addWidget(baz, 1, 0, 1, 2); // span 2 columns
QWidget window;
window.setLayout(layout);
window.setWindowTitle("test");
window.show();
return app.exec();
}
Запуск кода дает мне:
Если я изменю макет, чтобы получить кнопку, baz
, что охватывает 2 строки, я терплю неудачу:
layout->addWidget(foo, 0, 0);
layout->addWidget(bar, 1, 0);
layout->addWidget(baz, 0, 1, 2, 1); // (try to) span 2 rows
Вот что я получаю:
С вашим макетом все в порядке, кнопка базы охватывает два ряда. Проблема в том, что он не использует все доступное пространство. Вы должны изменить политику изменения размера кнопки по вертикали с Fixed на MinimumExpanding.
Я добавил следующее, после чего все было хорошо:
foo->setSizePolicy(QSizePolicy::MinimumExpanding,
QSizePolicy::MinimumExpanding);
bar->setSizePolicy(QSizePolicy::MinimumExpanding,
QSizePolicy::MinimumExpanding);
baz->setSizePolicy(QSizePolicy::MinimumExpanding,
QSizePolicy::MinimumExpanding);
(Спасибо)