签出在中找到的项目QtSingleApplication
https://github.com/qtproject/qt-solutions
.
在QtSingleApplication类中有一个名为
. 在
装载机
若要在尝试打开第二个实例时使主窗口位于顶部,必须像这样修改此方法。
void QtSingleApplication::activateWindow()
{
if (actWin) {
actWin->setWindowState(actWin->windowState() & ~Qt::WindowMinimized);
actWin->activateWindow();
actWin->raise();
//winapi call
SetWindowPos((HWND)actWin->winId() , HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
//hack to prevent sticking window to the fore
SetWindowPos((HWND)actWin->winId() , HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
}
警告:这是一个windows专用的解决方案,它可以在我的机器上运行。也一定要包括
窗口.h
在实施中。
[编辑]我的代码有一个问题,一旦激活,窗口就一直保持在最前面。这个黑客可以解决这个问题。