让Qt窗口覆盖整个桌面区域(支持多屏幕桌面)
废话不多说,直接看代码:
void WinFull::initWindow()
{x = GetSystemMetrics(SM_XVIRTUALSCREEN);y = GetSystemMetrics(SM_YVIRTUALSCREEN);w = GetSystemMetrics(SM_CXVIRTUALSCREEN);h = GetSystemMetrics(SM_CYVIRTUALSCREEN);
#ifdef DEBUGsetWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
#elsesetWindowFlags(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是有问题的。
第二:方法中最后五行代码必须按顺序执行,不按这个顺序会有问题。