我試圖創建一個實例Qt應用程序的QWidget的,我在這工作了點,但現在我想集中已經啓動的情況下,當第二個開始。 QWidget :: find(g_hWnd)應該返回小部件,但它失敗並在w-> show()上崩潰;查找單個實例的Qt應用程序
有什麼想法?
#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();
}
}
編輯:我現在看到奇趣科技發佈LGPL下QtSingleApplication類。
您是否嘗試過同時調試兩次,以確定第二個應用程序中的g_hWnd與第一個應用程序匹配? – GManNickG 2009-04-23 19:44:52
它們不匹配,但仍檢測到已有實例正在運行。 – 2009-04-23 19:51:36