当前位置: 代码迷 >> 综合 >> Clicking the dock icon to show the app on Mac
  详细解决方案

Clicking the dock icon to show the app on Mac

热度:59   发布时间:2023-12-08 10:22:06.0

原文出处:http://qt-project.org/forums/viewthread/720

Hello,

I’m building a desktop application using Qt 4.6.2 for both Mac and Windows.
I wanted to implement some Mac specific behavior:
When you click the Close button in the main application window, the application window should close but it shouldn’t quit. 
-> I’ve got this part working
When you click on the application dock icon, the application window should be shown and brought to the front.
-> I’m able to get this to work as long as some other application is the active application. If my application is still the active app, then clicking on the dock icon has no effect.

Can anyone help me with this problem?

Thanks,
Priyanka


I know it is an old thread but here is a workaround that seems to be OK:

  1. void MainWindow :: closeEvent ( QCloseEvent  *event )
  2. {
  3. #ifdef __MACOSX_CORE__
  4. if  (event -> spontaneous ( ) )
  5. {
  6. QStringList args ;
  7. args  <<  "-e" ;
  8. args  <<  "tell application \"System Events\"" ;
  9. args  <<  "-e" ;
  10. args  <<  "set visible of process\"" + QFileInfo ( QApplication :: applicationFilePath ( ) ). baseName ( ) + "\" to false" ;
  11. args  <<  "-e" ;
  12. args  <<  "end tell" ;
  13. QProcess :: execute ( "osascript" , args ) ;
  14. event -> ignore ( ) ;
  15. return ;
  16. }
  17. #endif
  18. //Do quit stuff
  19. }

I would have guessed spontaneous() should work the other way around…


  相关解决方案