Qt中默认的设置窗口置顶的方法是:
Qt::WindowFlags flag = windowFlags();
setWindowFlags(flag | Qt::WindowStaysOnTopHint);
但是这样设置有问题,正如其他博友说过的,必须要设置 show(),强制让当前窗口显示出来。
使用这种方法会导致在转换顶置时候,页面出现闪屏情况。
那么,只有使用C++自带的API,
设置顶置
::SetWindowPos((HWND)this->winId(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
取消置顶
::SetWindowPos((HWND)this->winId(), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
如果在使用这个API时,不需要设置窗口显示,没有闪屏的问题。
如果出现该函数无法识别时,只需要加上#include <atlconv.h> //编码转换文件,一般该头文件只放在.cpp文件中使用。该函数的主要作用是可以在Qt中操作C++中特有API。如果放到了.h中,有可能会出现各种各样的问题。