Как да накарам Qt Widget да расте с размера на прозореца?

Искам да имам малък QFormLayout, който расте, за да запълни своя родителски модул.

Създадох нов .ui файл с помощта на шаблона QWidget в Qt Designer. Поставих QFormLayout вътре в този „прозорец“, след което поставих някои контроли вътре в това QFormLayout.

Всичко това работи сравнително добре, но QFormLayout винаги остава на размера, който съм задал в Qt Designer. Бих искал QFormLayout да запълни своята родителска джаджа и да расте/смалява с нея.

Как мога да постигна това?


person bastibe    schedule 18.05.2011    source източник


Отговори (4)


В Designer активирайте centralWidget и задайте оформление, напр. хоризонтално или вертикално оформление. Тогава вашият QFormLayout автоматично ще преоразмери.

Изображение на дизайнер

Винаги се уверявайте, че всички джаджи имат оформление! В противен случай автоматичното преоразмеряване ще се повреди с тази джаджа!

Вижте също

Контролите настояват да бъдат твърде големи и няма да t преоразмеряване, в QtDesigner

person Jens    schedule 18.05.2011
comment
QtDesigner понякога може да бъде малко объркващ. - person bastibe; 19.05.2011
comment
о, БЛАГОДАРЯ за това! :-) Взирах се в QtDesigner (добре, QtCreator, същото нещо там все пак) в продължение на половин час и не можах да разбера защо централната ми джаджа не преоразмерява максимално - докато не забелязах, че малката малка икона, която са оградени в отговора ви, има червена маркировка „забранено“ над него. едно щракване върху бутона „оформяне вертикално“ в лентата с инструменти на създателя и проблемът е решен. За първи път забелязвам тази лента с инструменти между другото, лесна за пренебрегване... - person ssc; 03.02.2012
comment
За да коментирате отговора на Jens: На Mac щракнете върху приспособлението от най-високо ниво (не е задължително да се нарича centralWidget), след което щракнете върху Формуляр в лентата с менюта и изберете едно от оформленията. - person hnasarat; 08.08.2012
comment
Ако някой все още се чуди, това се прави в Windows в QT5.8 /QT Creator 4.2.1, като щракнете върху centralWidget от най-високо ниво (което има малка червена маркировка) и след това отидете на Tools›Form Editor›Lay Out Vertically ( или хоризонтално). - person LeoR; 28.04.2017

Открих, че е невъзможно да присвоя оформление на централния уиджет, докато не съм добавил поне едно дете под него. Тогава бих могъл да маркирам малката икона с червения знак „забранено“ и след това да щракна върху оформление в лентата с инструменти на дизайнера в горната част.

person Jillian Beuschel Marohnic    schedule 11.01.2013
comment
Това е влудяващо. Присвояването на оформление на централната джаджа би трябвало да е най-тривиалната операция в Qt Creator. Вместо това, това изисква комбиниране на това силно неинтуитивно решение с Jens' също неинтуитивно решение (в този точен ред). Въпреки че автоматизацията, осигурена от Qt Creator, все още побеждава многократно повтарящите се шаблони с голяма разлика, хакването около нейното ужасяващо потребителско изживяване (UX) ми даде ново трепване на очите. - person Cecil Curry; 15.06.2017
comment
@Cecil Curry дори след това решение ми отне 20 минути, за да разбера какво трябва ... защото centralWidget само в случай, когато няма опция в контекстното меню за добавяне на оформление ... само микроскопичен бутон в лентата с инструменти, който изглежда почти като неактивен - person Swift - Friday Pie; 26.07.2017
comment
Пиша този коментар, тъй като дори след решенията тук, имах проблеми да намеря опцията. Трябва да изберете centralWidget, след това щракнете с десния бутон върху малко свободно пространство на вашето приложение, отидете на „Оформление“ в контекстното меню, което се отваря, и след това изберете оформлението, което искате. Това работи поне за мен (QT5, използвайки QT Designer 5.11.1). - person kushy; 28.08.2018

Приетият отговор (неговото изображение) е грешен, поне сега в QT5. Вместо това трябва да зададете оформление на основния обект/приспособление (което сочи към гореспоменатото изображение, то трябва да бъде MainWindow вместо centralWidget). Също така имайте предвид, че трябва да имате поне един QObject създаден под него, за да работи това. Направете това и потребителският ви интерфейс ще започне да реагира на преоразмеряването на прозореца.

person KeyC0de    schedule 10.08.2018

Трябва да промените типа оформление по подразбиране на QWidget обект от най-високо ниво от тип оформление Break на други типове оформление (вертикално оформление, хоризонтално оформление, оформление на решетка, оформление на формуляр). Например: въведете описание на изображението тук

Към нещо подобно:

въведете описание на изображението тук

person Linh Dao    schedule 12.05.2020