2010-02-10 35 views
7

Mi aplicación QT tiene varias ventanas y, a veces, aunque las ventanas ya están abiertas pero ocultas debajo de otras ventanas, el usuario seleccionará una opción para abrir una de la barra de menús de la ventana principal, en cuyo caso quiero simplemente abrirla y hacerla el actual. Ahora, al utilizar QWidget-> raise, esta ventana se coloca encima de todas las otras ventanas, pero no la selecciona y eso es lo que debo hacer. Intenté QWidget-> setFocus pero eso no hace nada. Mientras tanto, estoy usando una combinación de QWidget-> close seguido de QWidget-> show pero me gustaría saber si hay un comando para usar con -> raise.en Qt, ¿cómo puedo hacer que una ventana sea la ventana actual?

me trataron:

 pMission->raise(); 
     pMission->setFocus(Qt::ActiveWindowFocusReason); 

pero no funcionó así que utilicé:

 pMission->close(); 
     pMission->show(); 
+0

¿Qué quiere decir "... ir en la parte superior de todas las demás ventanas, pero es imposible seleccionarlo"? –

+0

Me refiero al comando pMission-> raise(); hace que la ventana esté encima de todas las otras ventanas, pero no se convierte en la ventana "actual". –

Respuesta

8

¿Alguna vez ha intentado QWidget :: activateWindow?

De archivo de ayuda, esta función se va a

Establece el widget de nivel superior que contiene este widget a ser la ventana activa. Una ventana activa es una ventana visible de nivel superior que tiene el foco de entrada del teclado.

3

En MacOS Lion con Qt 4.8.0, raise() fue el único que funcionó para mí. activateWindow() y setFocus() no.

(no tengo karma suficiente para hacer de este un comentario sobre la respuesta de Mason)

+0

A partir de Qt 5.3.2, 32 bit, 'activateWindow()' funciona como se esperaba (como Mason describió) en OS X 10.10 Yosemite. – SexyBeast

Cuestiones relacionadas