2012-04-23 90 views
0

我在应用程序的插件中使用Qt。由于将Qt从4.3.4升级到4.6.4碳,Qt似乎想要控制应用程序。要重新获得菜单,我已经完成了应用程序不会退出dock图标,而是退出qt

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

但是,当我尝试从停靠栏图标关闭应用程序时,Qt退出而不是应用程序。

这怎么解决?

其他信息: - 从码头显示/隐藏按预期工作。 - ⌘Q退出本机应用程序(按预期) - 退出菜单退出本机应用程序(如预期的那样) - 与Qt 4.6.4可可相同的问题。

回答

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); 
}