Проблема с раскладкой Qt - PullRequest
1 голос
/ 06 апреля 2010

У меня следующий код Qt:

QVBoxLayout* box = new QVBoxLayout;
label = new QLabel(); // will be set later dynamically
box->addWidget (label);

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

Можно ли заставить виджет занять все место в макете, но не более?

Ответы [ 5 ]

1 голос
/ 06 апреля 2010

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

Вот все политики размера: http://qt.nokia.com/doc/4.6/qsizepolicy.html#Policy-enum

0 голосов
/ 30 апреля 2010

Лукаш, правильно ли я вас понимаю, что вы хотите, чтобы ярлык постоянно занимал место в одной строке? Если это так, если текст всего одна строка, то решение будет просто:

QVBoxLayout* box = new QVBoxLayout;<br> label = new QLabel(" "); // The space will create a vertical space in the layout<br> box->addWidget (label);

«Пустой» ярлык теперь будет вести себя точно так же, как и после установки текста.

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

0 голосов
/ 06 апреля 2010

Я думаю, вам нужно установить коэффициент растяжения ( setStrechFactor ) для главного окна, в котором вы размещаете макет.

0 голосов
/ 06 апреля 2010

Может быть, вы могли бы взглянуть на следующие методы:

- void setScaledContents(bool)
- void setWordWrap(bool on)

Надеюсь, это соответствует вашим требованиям!

0 голосов
/ 06 апреля 2010

Вы можете установить MaximumSize или взглянуть на sizePolicy .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...