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();
Может можно сделать лучше?