Расширение Qt Layout: как разместить виджет справа и позволить другому виджету полностью заполнить левый? - PullRequest
5 голосов
/ 23 июня 2011

Я хочу разместить виджет справа от QHBoxLayout, а остальные пробелы должны расширять левую сторону. Я установил для SizePolicy виджета значение Expanding, но оно недействительно. Кто-нибудь может предложить некоторую помощь? Спасибо.

Код здесь:

QHBoxLayout* tmplayout = new QHBoxLayout(this);
tmplayout->setContentsMargins(0, 0, 0, 0);
lineEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Ignored);
tmplayout->addWidget(lineEdit, 0, Qt::AlignRight);
tmplayout->addWidget(pushButton, 0, Qt::AlignRight);

lineEdit должен расшириться.

Ответы [ 4 ]

7 голосов
/ 23 июня 2011

Попробуйте изменить:

tmplayout->addWidget(lineEdit, 0, Qt::AlignRight);
tmplayout->addWidget(pushButton, 0, Qt::AlignRight);

На:

tmplayout->addWidget(lineEdit);
tmplayout->addWidget(pushButton);

При работе с такими простыми макетами нет необходимости явно указывать коэффициенты выравнивания или растяжения.

Если вы хотите принудительно нажать кнопку определенного размера, вы можете использовать setMinimumSize , setMaximumSize и setFixedSize

С наилучшими пожеланиями

2 голосов
/ 23 июня 2011

Для виджетов, которые вы хотите расположить слева и развернуть, попробуйте просто добавить их перед теми, которые находятся справа, и добавить 1 для их коэффициента растяжения. Например,

tmplayout->addWidget(exampleWidget, 1);

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

tmplayout->addWidget(lineEdit);
tmplayout->addWidget(pushbutton);

Это автоматически придаст им коэффициент растяжения 0.

Поскольку коэффициент растяжения exampleWidget в этом примере равен 1, что выше значения по умолчанию 0, exampleWidget будет расширяться; и, поскольку вы добавите его перед остальными, оно будет слева.

1 голос
/ 23 июня 2011

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

0 голосов
/ 23 июня 2011

Попробуйте fixed или minimum политики размера. Даже вы можете установить максимальную ширину.

...