Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Kurles от Февраля 04, 2012, 10:10



Название: Вычислить оптимальный размер диалога для определенного лайаута.
Отправлено: Kurles от Февраля 04, 2012, 10:10
Здравствуйте! В продолжение темы eventFilter за пределами окна с флагом Qt::Popup (http://www.prog.org.ru/topic_20812_0.html): есть лайаут, укомплектованный другими лейаутами с виджетами, нужно узнать минимальный размер виджета для этого лейаута до вывода его на экран. Пробовал копать в сторону void QWidget::updateGeometry () (http://doc.qt.nokia.com/4.7/qwidget.html#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();
но, естественно, размер у виджета не поменялся :( Нужно это для определения геометрии виджета, помеченом на картинке.
(http://fotohosting.org/thumb.php?id=6D06_4F2CD1CA) (http://fotohosting.org/share.php?id=6D06_4F2CD1CA)
Пока тупо в выставляю предварительно в ручную подсчитанный размер, что не есть гуд, так как количество рядов кнопок по вертикали может увеличиваться.


Название: Re: Вычислить оптимальный размер диалога для определенного лайаута.
Отправлено: twp от Февраля 04, 2012, 13:04
минимальный оптимальный размер это QWidget::minimumSizeHint(), только вот будет ли работать до показа виджета. Попробуй вызвать перед этим QWidget::adjustSize() или QLayout::activate()


Название: Re: Вычислить оптимальный размер диалога для определенного лайаута.
Отправлено: Kurles от Февраля 05, 2012, 12:02
минимальный оптимальный размер это QWidget::minimumSizeHint(), только вот будет ли работать до показа виджета. Попробуй вызвать перед этим QWidget::adjustSize() или QLayout::activate()
Спасибо! Блин, даже стыдно, что называется "читайте доки, они рулят!". Все работает и до вызовов QWidget::adjustSize() или QLayout::activate().