早上好托盤,在我的MacOSX上的應用程序,我想給用戶選擇「最小化到托盤」。我用QT5,我改寫了最小化到MacOSX上
changeEvent(QEvent *event)
功能。在那裏,我做這樣的事情
switch(event->type())
{
case QEvent::WindowStateChange:
{
if (this->windowState() & Qt::WindowMinimized) {
if(*option minimize to tray enable*) {
event->ignore();
QTimer::singleShot(0, this, SLOT(hide()));
}
}
break;
}
default:
break;
}
那麼,它可以在Linux和Windows,但問題是,在MacOSX上此代碼不能正常工作,並創建了一個錯誤。實際上,窗口在任務欄中仍然是最小化的(除了碼頭),而且,如果窗口從任務欄而不是托盤圖標調整大小,GUI將被阻止並且不會更改。 GUI仍然可以發送信號,但不能更改。我必須從托盤圖標重新顯示窗口以解除對GUI的阻止。
接下來的問題:我如何才能避免,儘量減少在MacOSX上的任務欄上的窗口?
另一個相關的問題:我已經閱讀了一些論壇,其中一些用戶在MacOSX中談論「標準行爲」,例如當單擊「x」按鈕時不關閉應用程序,或者不使用托盤圖標ecc 。 ecc ....有人可以發佈官方鏈接應用程序應該如何在MacOSX中表現?
非常感謝大家
嗯感謝您的評論。奇怪的是,該應用程序還有一個「接近托盤」選項,它運行良好。但我使用相同的Qt函數「hide()」。我將調查你對close和orderOut之間的區別。謝謝。 – n3mo
那麼,如果'hide()'是'-orderOut:'的一個包裝,那麼對於「接近托盤」,這將工作得很好。正如我所說,'-close'和'-orderOut:'除了幾個角落案例外真的非常相似。據推測,窗口在「接近托盤」的情況下並未最小化,所以這些差異之一是不相關的。 –