Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QDockWidget raise
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
DEADHUNT
QDockWidget *dockWidget = ...;
restoreDockWidget(dockWidget); // from QMainWindow
dockWidget->raise();

Если dockWidget уже является видимым то raise нормально работает, и делает его активным, но если dockWidget был закрыт, то после выполнения данного кода dockWidget восстанавливается, но не становится активным(raise не работает). Покопавшись в коде restoreDockWidget увидел там вызов какого-то сигнала через QMetaObject::invoke, может на момент вызова raise dockWidget ещё не восстанавливается, и поэтому функции raise ничего не делает.
придумал такое решение:
QDockWidget *dockWidget = ...;
restoreDockWidget(dockWidget);
QTime::singleShot(100, dockWidget, SLOT(raise());
dockWidget->raise();

Может можно сделать лучше?
Litkevich Yuriy
помимо raise() есть ещё activateWindow() обычно их используют на пару
DEADHUNT
Пробовал и вместе и по отдельности, эффект тот же самый что если QDockWidget был закрыт, то после вызова restoreDockWidget и последующего вызова raise он не делается активным(среди множества объединённых dock widget`ов). Может это Qt bug?
Litkevich Yuriy
Цитата(DEADHUNT @ 18.7.2010, 17:51) *
Может это Qt bug?
надо порыться в трекере, может и такое быть
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.