2016-03-11 2 views
0

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

--------------------------
| 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); 

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

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

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

ответ

0

Изменить

this-> layout-> addWidget (this-> imageLabel, 1,0,1,1);

к

этом-> layout-> addWidget (этом-> imageLabel, 1,0,1, 2 , Qt :: AlignCenter);

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

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

Строка растяжения работает, что она делает, так это то, что первая строка получает минимальное пространство, в котором она нуждается, а вторая строка занимает все остальное пространство , поэтому ваши кнопки выдвинуты вверху: your layout