我正在尝试创建一个单一实例Qt应用程序,我正处于这样的工作,但现在我想在启动第二个时关注已经启动的实例.QWidget :: find(g_hWnd)应该返回小部件,但它失败并在w-> show();崩溃;
有什么想法吗?
#pragma data_seg("Shared")
HWND g_hWnd = NULL;
#pragma data_seg()
#pragma comment(linker,"/section:Shared,rws")
int main(int argc, char *argv[])
{
if (g_hWnd)
{
QWidget* w = QWidget::find(g_hWnd);
w->show();
return 0;
}
else
{
QApplication a(argc, argv);
mainWindow w;
w.show();
g_hWnd = a.topLevelWidgets().at(0)->winId(); //or w.winId()?
return a.exec();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我现在看到奇趣科技在LGPL下发布了QtSingleApplication类.
Mar*_*ett 10
您应该使用qtsingleapplication API
编辑 - 这是一个单独的下载, 请看这里的LGPL和商业版