2014-02-17 2 views
4

У меня есть следующий код, где я помещаю кнопку и текстовое поле в QGridLayout. PLease замечает, что я использую столбцы 3 и 4 для их размещения.Qt пустой пробел в QGridLayout?

QGridLayout *insAddPanel = new QGridLayout(); 
    { 
     QLineEdit* ledInstrumentName = new QLineEdit(); 
     insAddPanel->addWidget(ledInstrumentName, 0, 3); 

     QPushButton* btnAddInstrument = new QPushButton(); 
     btnAddInstrument->setText("Add"); 
     insAddPanel->addWidget(btnAddInstrument, 0, 4); 
    } 
    mainLayout->addLayout(insAddPanel); 
    ...... 

Однако, когда я запускаю это, я получаю что-то вроде этого:

enter image description here

Я хотел редактирования текста и кнопку, чтобы занимать только 2/5 доступного горизонтального пространства. Вот почему я разместил их в 3-й и 4-й колонках. Как это не работает, как мне это сделать? Есть что-то вроде пустого космического виджета в Qt? Я искал, но не нашел.

ответ

1

Используйте QHBoxLayout, добавьте несколько прокладок и установите правильные коэффициенты растяжения. QSpacerItem - это примерно ваш оригинальный вопрос.

Есть ли какие-либо основания для использования схемы сетки?

0

Вы можете использовать QGridLayout::setColumnMinumumWidth(int column, int minSize), чтобы задать ширину столбца column по умолчанию minSize пикселей. Это также работает для пустых столбцов. В вашем случае, вы могли бы сделать что-то вроде этого:

insAddPanel->setColumnMinimumWidth(0, 100); //Makes the empty column 0 100 pixels wide 
insAddPanel->setColumnMinimumWidth(1, 100); //Makes the empty column 1 100 pixels wide 
insAddPanel->setColumnMinimumWidth(2, 100); //Makes the empty column 2 100 pixels wide 

Изменения 100 к количеству пикселей, которые вы хотите столбцы быть широкими.

Также, если вы используете это решение, вам не нужны три столбца, достаточно одного столбца, который очень большой.

Существует также метод setRowMinimumHeight, который делает то же самое для строк.

Смежные вопросы