Windows 使用QQmlApplicationEngine强制QApplication处于前台
我试图强迫我的应用程序保持在一切之上,即使其他进程弹出。这是我的Windows 使用QQmlApplicationEngine强制QApplication处于前台,windows,qt,qqmlapplicationengine,setforegroundwindow,Windows,Qt,Qqmlapplicationengine,Setforegroundwindow,我试图强迫我的应用程序保持在一切之上,即使其他进程弹出。这是我的main的简化版本: main.cpp QApplication app{argc, argv}; QQmlApplicationEngine engine; engine.load(QUrl{"qrc:/file.qml"}); return app.exec(); 我需要一个适用于Windows和Linux的解决方案。然而,优先考虑的是前者,似乎没有
main
的简化版本:
main.cpp
QApplication app{argc, argv};
QQmlApplicationEngine engine;
engine.load(QUrl{"qrc:/file.qml"});
return app.exec();
我需要一个适用于Windows
和Linux
的解决方案。然而,优先考虑的是前者,似乎没有Qt
解决方案。以下是我尝试过的:
#ifdef _WIN32
HWND hCurWnd = ::GetForegroundWindow();
DWORD dwMyID = ::GetCurrentThreadId();
DWORD dwCurID = ::GetWindowThreadProcessId(hCurWnd, NULL);
::AttachThreadInput(dwCurID, dwMyID, TRUE);
::SetWindowPos(hCurWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
::SetWindowPos(hCurWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
bool ok = ::SetForegroundWindow(hCurWnd);
LOG_INFO() << ok;
::AttachThreadInput(dwCurID, dwMyID, FALSE);
::SetFocus(hCurWnd);
::SetActiveWindow(hCurWnd);
#endif
\ifdef\u WIN32
HWND hCurWnd=::GetForeGroundIndow();
DWORD dwMyID=::GetCurrentThreadId();
DWORD dwCurID=::GetWindowThreadProcessId(hCurWnd,NULL);
::AttachThreadInput(dwCurID、dwMyID、TRUE);
::设置窗口位置(hCurWnd,HWND_TOPMOST,0,0,0,SWP_NOSIZE | SWP_NOMOVE);
::设置窗口位置(hCurWnd,HWND_NOTOPMOST,0,0,0,SWP_NOSIZE | SWP_NOMOVE);
bool ok=::SetForegroundWindow(hCurWnd);
LOG_INFO()不管它是多么简单:
因此,我在我的文件.qml中写了这个:
ApplicationWindow
{
visibility: "FullScreen"
flags: Qt.WindowStaysOnTopHint
}