废话不多说,直接看代码:
void WinFull::initWindow()
{
x = GetSystemMetrics(SM_XVIRTUALSCREEN);
y = GetSystemMetrics(SM_YVIRTUALSCREEN);
w = GetSystemMetrics(SM_CXVIRTUALSCREEN);
h = GetSystemMetrics(SM_CYVIRTUALSCREEN);
#ifdef DEBUG
setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
#else
setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint);
#endif
show();
setGeometry(x, y, w, h);
setScreen(qApp->primaryScreen());
auto hwnd = (HWND)winId();
SetWindowPos(hwnd, nullptr, x, y, w, h, SWP_NOZORDER | SWP_SHOWWINDOW);
}
第一:窗口必须是自定义 QMainWindow ,不能是 QWidget,用QWidget是有问题的。
第二:方法中最后五行代码必须按顺序执行,不按这个顺序会有问题。