Qt Gridlayout не перераспределяет элементы GUI - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть следующий код в ctor моего виджета главного окна, в моем приложении Qt.Независимо от того, как я выровняю кнопки, добавленные в QGridLayout, они всегда остаются в верхнем левом углу, друг над другом.

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

btn_File= new QPushButton("&File", this);
btn_Close = new QPushButton("&Close", this);
btn_File->setAutoFillBackground(true);
btn_Close->setAutoFillBackground(true);

QGridLayout * layout = new QGridLayout(this);
layout->setContentsMargins(20,20,10,10);
layout->setSpacing(5);
layout->addWidget(btn_File,2,2, Qt::AlignRight);
layout->addWidget(btn_Close,1,1);
this->setLayout(layout);

РЕДАКТИРОВАТЬ: Кажется, что только btn_Close рисуется.Я просто попытался добавить QComboBox в сетку, но он не отображается.

Ответы [ 3 ]

1 голос
/ 05 декабря 2011

Проблема заключалась в том, что мое главное окно было получено из QMainWindow, в котором вам нужно добавить CentralWidget перед добавлением элементов GUI.Вместо этого я изменил свое главное окно на производное от QWidget, и теперь оно работает.

0 голосов
/ 05 декабря 2011

Qt макеты действительно отстой! выравнивание на qgridlayout зависит от размера объектов, количества столбцов, в которых нуждается объект, и размера самого большого вставленного объекта ... поэтому очень трудно поместить объекты так, как вы хотите ... я предлагаю использовать setGeometry или двигаться вместо!

0 голосов
/ 05 декабря 2011

пробовал звонить this->adjustSize() в конце?

...