Russian Qt Forum
Ноябрь 26, 2024, 21:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [4.x.x] Не могу сделать динамический виджет. :(  (Прочитано 4000 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« : Апрель 10, 2009, 11:39 »

Промучался пол дня, но решения не нашел, хоть вопрос и новичковский. Улыбающийся
Есть диалог, в нем виджеты, расположенные так:
Код
C++ (Qt)
......................
QVBoxLayout* layout1=new QVBoxLayout();
layout1->addWidget(label1);
layout1->addWidget(label2);
layout1->addWidget(label3);
 
QHBoxLayout* layout2=new QHBoxLayout();
layout2->addWidget(buttonClose);
layout2->addWidget(buttonMore);
 
QVBoxLayout* mainLayout=new QVBoxLayout();
mainLayout->addLayout(layout1);
mainLayout->addLayout(layout2);
mainLayout->addWidget(listWidget);
 
this->setLayout(mainLayout);
......................
connect(buttonMore,
SIGNAL(clicked(bool)),
listWidget,
SLOT(setVisible(bool));
.............................
listWidget->hide();
При показе виджета форма растягивается, тут все нормально, но при скрытии форма остается в прежнем положении. В примере из книги указано, что для mainLayout нужно поставить фиксированный размер, это прокатывает, но мне нужно, чтобы можно было ресайзить диалог. Куда копать?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Апрель 10, 2009, 12:00 »

adjustSize() непробывал вызывать?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Апрель 10, 2009, 12:15 »

Пробовал. Не помогает.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Апрель 10, 2009, 12:33 »

А выложи компилябельный примерчик, гляну у себя
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Апрель 10, 2009, 12:47 »

Решил!!!
this->resize(this->size().width(),this->layout().minimumSize().height())
Ы!
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Апрель 10, 2009, 12:51 »

А если просто так:

resize(minimumSizeHint());

?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Апрель 10, 2009, 16:56 »

Млин, не помогло данное решение. Пока так работает:
Код
C++ (Qt)
listWidget->setVisible(!listWidget->visible());
qApp->processEvents();//Без этого не работает
this->resize(this->size().width(),this->layout().minimumSize().height());
Если убрать qApp->processEvents(), ничего не работает. Как я понял, лайот сразу не вычисляет свои новые размеры. Кстати, можно даже так this->resize(this->size().width(),1). Вот только у этого решение косяк, так как происходит заметное моргание.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.13 секунд. Запросов: 23.