Qt4: Изменение размера скрытого виджета

Модератор: Модераторы разделов

TwisT
Сообщения: 265
ОС: Debian

Qt4: Изменение размера скрытого виджета

Сообщение TwisT »

Всем доброго времени
Начит грабля такая:создаю скрытый виджет,и сразу делаю ему resize()
его размер естественно после вызова метода не меняется,а изменится только тогда когда сделаем setVisible(true) или show(),
но в то время пока виджет скрытый в нем производятся вычисления в которых учавствует его size()
Есть ли возможность насильно изменить размер виджета?

P.S. В исходниках либы ответа не нашел, возможно плохо искал)
Linux user #432536.
Спасибо сказали:
Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12

Re: Qt4: Изменение размера скрытого виджета

Сообщение Assuri »

TwisT писал(а):
11.11.2007 01:03
Всем доброго времени
Начит грабля такая:создаю скрытый виджет,и сразу делаю ему resize()
его размер естественно после вызова метода не меняется,а изменится только тогда когда сделаем setVisible(true) или show(),
но в то время пока виджет скрытый в нем производятся вычисления в которых учавствует его size()
Есть ли возможность насильно изменить размер виджета?

P.S. В исходниках либы ответа не нашел, возможно плохо искал)

Ну во-первых это неправда. Размер даже скрытого виджета должен меняться. По крайней мере у меня меняется. А во-вторых можно попробовать такие функции: setBaseSize(QSize&), setMinimumSize(QSize&) и т.п.
Спасибо сказали:
TwisT
Сообщения: 265
ОС: Debian

Re: Qt4: Изменение размера скрытого виджета

Сообщение TwisT »

Что значит неправда, сам посмотри в исходник qwidget.cpp метод setVisible(bool) если мне не веришь.

Код: Выделить всё

// activate our layout before we and our children become visible
if (d->layout)
    d->layout->activate();

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

Код: Выделить всё

p2->resize(700,350);
p2->layout()->activate();

Всем пасибо
Linux user #432536.
Спасибо сказали: