2010-08-25 6 views
2

J'ai une application Qt 4.6.2 fonctionnant sur un système Windows XP SP2 x64. Lorsque j'appuie sur le bouton d'alimentation/d'arrêt physique du système, lorsque mon application est en cours d'exécution, rien ne se passe, l'application ne se ferme pas et le système ne s'arrête pas.Arrêt du système de blocage des applications Qt

Si je vais au menu Démarrer et que je clique sur Arrêter, alors mon application se fermera mais le système ne s'arrêtera pas.

Avec mon application fermée, le système se ferme bien dans les deux sens.

Des idées de ce que je peux faire pour que mon application se comporte et permette au système de s'arrêter correctement?

Merci, Zac

+2

Quelqu'un d'autre a eu le même problème en raison de réimplémentant QMainWindow :: CloseEvent. http://www.qtcentre.org/threads/9653-closeEvent-preventing-shutdown Peut-être que cela vous aide à résoudre ce problème. – Exa

+0

Certaines versions de Skype ont le même problème (sous Linux). – IanH

Répondre

1

Vous devez réimplémenter QCoreApplication::winEventFilter dans votre classe dérivée QCoreApplication/QApplication, et gérer l'y WM_QUERYENDSESSION message. Je ne suis pas sûr si WM_QUERYENDSESSION sera livré à votre application ou s'il s'agit d'un message de système de diffusion (et je n'ai pas de machine Windows à tester.) Si vous ne semblez pas recevoir ce message là-bas , vous devrez installer un event filter. Dans les deux cas, vous devez répondre correctement à WM_QUERYENDSESSION - c'est le message que vous devez gérer.

3

Lire aboout QSessionManager et QApplication :: commitData - il est plus moyen Qt

Questions connexes