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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вычислить оптимальный размер диалога для определенного лайаута.  (Прочитано 3674 раз)
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« : Февраль 04, 2012, 10:10 »

Здравствуйте! В продолжение темы eventFilter за пределами окна с флагом Qt::Popup: есть лайаут, укомплектованный другими лейаутами с виджетами, нужно узнать минимальный размер виджета для этого лейаута до вывода его на экран. Пробовал копать в сторону void QWidget::updateGeometry ():
Код
C++ (Qt)
   QVBoxLayout *lay = new QVBoxLayout;
   QWidget *w = new QWidget(this, Qt::Window);
   lay->addWidget(new QPushButton("button"));
   w->resize(0,0);
   w->setLayout(lay);
   w->updateGeometry();
   qDebug() << w->size();
но, естественно, размер у виджета не поменялся Грустный Нужно это для определения геометрии виджета, помеченом на картинке.

Пока тупо в выставляю предварительно в ручную подсчитанный размер, что не есть гуд, так как количество рядов кнопок по вертикали может увеличиваться.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
twp
Гость
« Ответ #1 : Февраль 04, 2012, 13:04 »

минимальный оптимальный размер это QWidget::minimumSizeHint(), только вот будет ли работать до показа виджета. Попробуй вызвать перед этим QWidget::adjustSize() или QLayout::activate()
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #2 : Февраль 05, 2012, 12:02 »

минимальный оптимальный размер это QWidget::minimumSizeHint(), только вот будет ли работать до показа виджета. Попробуй вызвать перед этим QWidget::adjustSize() или QLayout::activate()
Спасибо! Блин, даже стыдно, что называется "читайте доки, они рулят!". Все работает и до вызовов QWidget::adjustSize() или QLayout::activate().
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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