Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Восстановление размеров QSplitter
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
call_me_Frank
Привет!

пытаюсь восстановить соотношения размеров элементов внутри QSplitter'a, делаю это через sizes() & setSizes().
Проблема заключается в том, что восстановление размеров (setSizes()) вызывается до того момента, когда сплиттер будет отображен (show()). И поэтому никакого восстановления не происходит. В моем случае это приводит к тому, что мне надо сконфигурировать некоторый "документ", потом его отобразить, и потом сконфигурировать еще раз только ради того, чтоб привести в порядок сплиттер - это кажется излишним.

Если не трогать архитектуру приложения, каким образом я могу связать момент отображения QSplitter'a с тем, чтобы восстановить его размеры? Метод show() не является виртуальным, сигнала о том, что виджет был нарисован тоже нет. что посоветуете? 8)
kruger
QSplitter сохраняет и востанавливает размеры самостоятельно, глянь: QByteArray QSplitter::saveState () const и bool QSplitter::restoreState ( const QByteArray & state )?
call_me_Frank
Цитата(kruger @ 20.10.2015, 16:58) *
QSplitter сохраняет и востанавливает размеры самостоятельно, глянь: QByteArray QSplitter::saveState () const и bool QSplitter::restoreState ( const QByteArray & state )?


state() - это тот же sizes(), только в ByteArray, а не в списке, содержание тоже самое. Так что это не поможет :]
ViGOur
Я не помню void QWidget::showEvent ( QShowEvent * event ) в какой момент вызывается, если сделать как-то так:
void CMyWidget::showEvent ( QShowEvent *pEvent) 
{
    QWidget::showEvent(e);
    // Здесь выполнить востановление размеров...
}


А вообще, я почитал, и во многих местах советуется поставить в то место showEvent, где у меня коментарий такой код:
emit window_loaded();
разумеется где-то сделав:
connect(this, SIGNAL(window_loaded), this, SLOT(your_function()));
Получается некий хак, но работает...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.