一、QT 窗口置顶
一般情况下,我们开发QT桌面应用程序如需用到窗口置顶操作时,会这样做:
setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
但经过尝试发现此方法会导致窗口被隐藏,再次调用 show方法又会导致闪烁,查看源码后发现在窗口被创建后(构造函数执行完成后),调用setWindowFlags会导致窗口被 hide,而在构造函数内部调用setWindowFlags则不会引起窗口的hide。
因此此方法并不适用。
二、windows 下窗口置顶
windows 下窗口置顶可采用下面的方法:
::SetWindowPos((HWND)winId(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
取消置顶:
::SetWindowPos((HWND)winId(), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
SetWindowPos 方法函数原型:
WINUSERAPI BOOL WINAPI SetWindowPos(HWND hWnd,HWND hWndInsertAfter,int X,int Y,int cx,_In_ int cy, UINT uFlags);
SetWindowPos 方法参数详解:
序号 | 参数 |
---|