0

アプリケーションのプラグインでQtを使用しています。Qtを4.3.4から4.6.4カーボンにアップグレードしたので、Qtはアプリケーションを制御したいと考えているようです。メニューを取り戻すために、私はしました

qApp-> setAttribute(Qt :: AA_MacPluginApplication、true);

ただし、ドックアイコンからアプリケーションを閉じようとすると、アプリケーションではなくQtが終了します。

どうすれば修正できますか?

追加情報:-ドックからの表示/非表示は期待どおりに機能します。-⌘Qはネイティブアプリケーションを終了します(予想どおり)-メニューを終了するとネイティブアプリケーションが終了します(予想どおり)-Qt4.6.4cocoaでも同じ問題が発生します。

4

1 に答える 1

0

これは、4.6 で導入された Qt のバグです。 https://bugreports.qt-project.org/browse/QTBUG-8087?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

幸いなことに、回避策があります。

long refCon = 0;
AEEventHandlerUPP handler = NULL;
AEGetEventHandler(kCoreEventClass, kAEQuitApplication, &handler, &refCon, false);

QApplication::setAttribute(Qt::AA_MacPluginApplication, true);
int argc = 0;
(void)new QApplication(argc, 0, true);

if (handler)
{
    AEInstallEventHandler(kCoreEventClass, kAEQuitApplication, handler, refCon, false);
}
于 2012-04-24T16:20:15.887 に答える