You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 23:50:29