crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Восстановление размеров QSplitter
call_me_Frank
  опции профиля:
сообщение 16.10.2015, 17:04
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 20.10.2010
Пользователь №: 2129

Спасибо сказали: 0 раз(а)




Репутация:   0  


Привет!

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

Если не трогать архитектуру приложения, каким образом я могу связать момент отображения QSplitter'a с тем, чтобы восстановить его размеры? Метод show() не является виртуальным, сигнала о том, что виджет был нарисован тоже нет. что посоветуете? 8)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kruger
  опции профиля:
сообщение 20.10.2015, 16:58
Сообщение #2


Студент
*

Группа: Новичок
Сообщений: 15
Регистрация: 6.10.2015
Пользователь №: 4459

Спасибо сказали: 0 раз(а)




Репутация:   0  


QSplitter сохраняет и востанавливает размеры самостоятельно, глянь: QByteArray QSplitter::saveState () const и bool QSplitter::restoreState ( const QByteArray & state )?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
call_me_Frank
  опции профиля:
сообщение 20.10.2015, 18:32
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 20.10.2010
Пользователь №: 2129

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(kruger @ 20.10.2015, 16:58) *
QSplitter сохраняет и востанавливает размеры самостоятельно, глянь: QByteArray QSplitter::saveState () const и bool QSplitter::restoreState ( const QByteArray & state )?


state() - это тот же sizes(), только в ByteArray, а не в списке, содержание тоже самое. Так что это не поможет :]
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 21.10.2015, 13:20
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Я не помню 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()));
Получается некий хак, но работает...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.4.2024, 16:15