Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 使用QQmlApplicationEngine强制QApplication处于前台_Windows_Qt_Qqmlapplicationengine_Setforegroundwindow - Fatal编程技术网

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
}