Qt中QDesktopWidget类无法找到问题求助
解决QDesktopWidget无法找到的问题
首先明确:QDesktopWidget在Qt5.11起被标记为过时,Qt6中直接被移除,这是你找不到它的核心原因——哪怕你加了QT += widgets,如果用的是Qt6,这个类已经不存在了。
给你两种场景的解决方案:
如果你还在使用Qt5
- 先确保代码里包含了头文件:
#include <QDesktopWidget> - 但官方强烈建议迁移到新的屏幕API,因为QDesktopWidget早晚会被彻底淘汰,比如用
QGuiApplication和QScreen来获取屏幕信息:// 获取主屏幕的可用区域(不含任务栏、dock等) QRect availableArea = QGuiApplication::primaryScreen()->availableGeometry(); // 把窗口调整为屏幕的70%大小 yourWidget->resize(availableArea.width() * 0.7, availableArea.height() * 0.7);
如果你使用的是Qt6
QDesktopWidget已经被完全移除,必须用新API替代,示例代码如下:
#include <QGuiApplication> #include <QScreen> #include <QWidget> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; // 获取主屏幕可用区域 QRect screenRect = QGuiApplication::primaryScreen()->availableGeometry(); // 设置窗口大小为屏幕的80% window.resize(screenRect.width() * 0.8, screenRect.height() * 0.8); // 窗口居中 window.move(screenRect.center() - window.rect().center()); window.show(); return app.exec(); }
额外检查点
- 确认你确实重新运行了qmake:Qt Creator里右键项目 → 选择「Run qmake」,再重新编译;如果是命令行,先执行
qmake再make/nmake - 检查Qt版本:在代码里打印
qVersion()确认版本,避免版本混淆
内容的提问来源于stack exchange,提问作者symanoz
相关产品推荐
相关产品推荐

