2012-02-13 85 views
1

我有一個應用程序,在其上顯示配置面板(QFrame)來設置配置。現在我想要在用戶點擊應用程序的其他任何地方時關閉配置面板的功能,但如果用戶單擊應用程序外部的任何地方,則不應關閉應用程序。QApplication :: activeWindow在Mac上始終返回'0'

目前我有以下代碼在Win 7上正常工作,但在Mac上有問題。如果我們點擊應用程序(但外面配置面板)和零值,任何地方,如果我點擊任何其他應用程序,它是什麼,預計

void ConfigurationPanel::changeEvent (QEvent * event) 
    { 
    if(event->type() == QEvent::ActivationChange) 
    { 
     if(!isActiveWindow()) 
     { 
      if(QApplication::activeWindow()) 
      { 
       close(); 
      } 
     } 
    } 
} 

在Windows上的QApplication :: activeWindows()返回非零值。但是在Mac上,無論我點擊什麼,QApplication :: activeWindow()都會得到零值。

誰能告訴我我該如何解決這個問題?

謝謝

回答

1

我找到了問題的解決方案。 這是隻適用於Mac,因爲在Windows上它工作正常。

在changeEvent()處理程序中,我發佈了一個自定義事件,我在ConfigPanel中處理它自己。在customEvent()處理程序中,當我執行QApplication :: activeWindow()時,根據被點擊的應用程序獲得適當的值。

由於Mac在changeEvent處理程序中的某些原因,我們總是將'0'作爲活動窗口。

希望這對他人有幫助!