c++ windows winapi qt foreground

c++ - Traer ventana al frente-> raise(), show(), activateWindow() no funcionan



windows winapi (4)

Este problema es específico de Windows. Si la ventana activa pertenece a algún proceso, Windows no permite que otros procesos cambien la Ventana activa.

(No intente lo siguiente: https://wiki.qt.io/Qt_project_org_faq#QWidget_::activateWindow.28.29_-_behavior_under_windows )

En mi aplicación Qt, abro una URL en el navegador predeterminado. Después quiero volver a abrir la ventana principal de mi aplicación.

Intenté todos los enfoques que pude encontrar, pero ninguno funcionó. Todo lo que hace es parpadear en la barra de tareas (de la ventana 7) Aquí hay un ejemplo:

this->viewer->show(); this->viewer->raise(); this->viewer->activateWindow();

* viewer es un puntero a QmlApplicationViewer que se deriva de QDeclarativeView


Este problema no es específico de Windows ... Tengo el mismo problema en Linux. Mi solución fue cerrar () la ventana antes de volver a abrirla ().


prueba esto:

viewer.setWindowState( (windowState() & ~Qt::WindowMinimized) | Qt::WindowActive); viewer.raise(); // for MacOS viewer.activateWindow(); // for Windows

funciona en mi proyecto (en mi visor de proyecto es QMainWindow): https://github.com/iptton/Rythem .


for ( QWindow* appWindow : qApplication.allWindows() ) { appWindow->show(); //bring window to top on OSX appWindow->raise(); //bring window from minimized state on OSX appWindow->requestActivate(); //bring window to front/unminimize on windows }

Tenga en cuenta que esto también muestra la ventana de otros escritorios virtuales tanto en OSX como en Windows. No probé esto en Linux, pero puede funcionar.