Qt QGridLayout setRowStretch не работает

Я новичок в Qt. Я пытаюсь создать окно со следующим макетом,

—————————
| Button1 | Button2 |
| ———————— |
| ——- Изображение ——— |
————————-

Я могу создать этот макет с помощью QGridlayout. Смотрите следующий код,

  QPushButton *button = new QPushButton(this);
QPushButton *nextButton = new QPushButton(this);
button->setText("Select new Image");
nextButton->setText("Next Image >>");
button->setMinimumSize(100,50);
nextButton->setMaximumSize(500,50);

button->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
nextButton->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
this->centralWidget = new QWidget(this);
this->centralWidget->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
this->centralWidget->setGeometry(0,0,800,800);
QPalette Pal(palette());
Pal.setColor(QPalette::Background, Qt::black);
this->centralWidget->setAutoFillBackground(true);
this->centralWidget->setPalette(Pal);

this->layout = new QGridLayout (centralWidget);
this->layout->addWidget(button,0,0,1,1);
this->layout->addWidget(nextButton,0,1,1,1);
this->layout->addWidget(this->imageLabel,1,0,1,1);
this->layout->setRowStretch(0,1);
this->layout->setRowStretch(1,10);

Но я хочу, чтобы изображение занимало больше места, но изображение отображается только в нижней половине окна. Пожалуйста, смотрите изображение
Вы можете видеть пространство между кнопками и изображением. Я хочу убрать пространство.

Я пытался использовать setRowStretch, но это не помогает.

PS: я использую Eclipse с плагином Qt. Также некоторые выборы, которые я сделал, возможно, Плохо Я новичок в Qt. большое спасибо

0

Решение

+ Изменить

этом-> layout-> addWidget (этом-> imageLabel, 1,0,1,1);

в

this-> layout-> addWidget (this-> imageLabel, 1,0,1,2,Qt :: AlignCenter);

Пятый параметр — это диапазон столбца, это означает, что новый элемент макета охватывает обе ячейки (1,0) и (1,1).
Посмотри на: addWidget.
Вы также хотите, чтобы изображение центрировалось, 6-й параметр является параметром выравнивания, который по умолчанию равен 0.

Если вы также хотите иметь большее изображение, вы должны масштабировать его.
(Я предполагаю, что остальная часть вашего кода верна.)

Растяжение строки работает, то, что он делает, — то, что первая строка получает только минимальное пространство, в котором она нуждается, и вторая строка занимает все остальное пространство, таким образом, ваши кнопки нажимаются наверх:
ваш макет

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]