Russian Qt Forum

Qt => Вопросы новичков => Тема начата: zorra от Апрель 26, 2014, 21:03



Название: сапер
Отправлено: zorra от Апрель 26, 2014, 21:03
Доброго времени суток. Начал изучать программирование в qt. Задали делать сапера. Застрял на расположении кнопок. использовал QGridLayout. Кнопки расположил по сетке (9x9). Вообщем вот кусочек кода:
Код:
QGridLayout *l1 = new QGridLayout;
....
.... (тут я вставлял кнопки в l1)
....
l1->setMargin(0);
l1->setSpacing(0);
setLayout(l1);

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


Название: Re: сапер
Отправлено: gil9red от Апрель 26, 2014, 21:48
Попробуйте setRowStretch  (http://doc.crossplatform.ru/qt/4.6.x/qgridlayout.html#setRowStretch) и setColumnStretch (http://doc.crossplatform.ru/qt/4.6.x/qgridlayout.html#setColumnStretch) :)


Сейчас смодулировал то, что вы хотите в дизайнере (скрин прилагается) и посмотрел код, который он сгенерировал, в общем такой:
Код
C++ (Qt)
// Вставка пружин, который будут прижимать виджеты
QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
gridLayout->addItem(horizontalSpacer, 0, 2, 1, 1);
 
QSpacerItem * verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
gridLayout->addItem(verticalSpacer, 2, 0, 1, 1);
 
Горизонтальная пружинка добавляется в первую строку, последний столбец
Вертикальнаяпружинка добавляется в последнюю строку, первый столбец


Название: Re: сапер
Отправлено: zorra от Апрель 26, 2014, 22:39
gil9red, я вот попробовал сделать так, как вы сказали, получается такая вот штука при растяжении экрана:


Название: Re: сапер
Отправлено: zorra от Апрель 26, 2014, 22:49
Я может не очень точно написал, надо как-то сделать, чтобы при растягивании формы, кнопки равномерно растягивались по форме без пробелов.


Название: Re: сапер
Отправлено: gil9red от Апрель 27, 2014, 00:07
Тогда:
У кнопок поставьте sizePolicy на Preffered -> button->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); ;)