crossplatform.ru

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


  Ответ в QDockWidget raise
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 18.7.2010, 14:19
 
Цитата(DEADHUNT @ 18.7.2010, 17:51) *
Может это Qt bug?
надо порыться в трекере, может и такое быть
DEADHUNT Дата 18.7.2010, 13:51
  Пробовал и вместе и по отдельности, эффект тот же самый что если QDockWidget был закрыт, то после вызова restoreDockWidget и последующего вызова raise он не делается активным(среди множества объединённых dock widget`ов). Может это Qt bug?
Litkevich Yuriy Дата 18.7.2010, 13:34
  помимо raise() есть ещё activateWindow() обычно их используют на пару
DEADHUNT Дата 18.7.2010, 11:31
 
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();

Может можно сделать лучше?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 19.4.2024, 4:00