关于 Qt4Qt5迁移至Qt6出现QDesktopWidget和QApplication::desktop()删除后兼容Qt6 的解决方法

发布于:2024-07-04 ⋅ 阅读:(132) ⋅ 点赞:(0)

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140036861

长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…

Qt开发专栏:各种问题解决(点击传送门)


问题

  兼容Qt4、Qt5的项目,移植到Qt6出现找不到“QDesktopWidget"和”QApplication->desktop()"的问题,本篇是兼容Qt6的解决方法。


原因

  因为Qt6已经删除了QDesktopWidget和QApplication->desktop()。


解决方法

修改1:头文件

  修改前:

#include <QDesktopWidget>

  修改后:

#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
#include <QScreen>
#else
#include <QDesktopWidget>
#endif

修改2:使用到desktop的地方都要修改

  修改前:

    _pKeyboardWidget->move(0, qApp->desktop()->height() - _pKeyboardWidget->height());

  修改后:

#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
    QScreen *pScreen = QApplication::primaryScreen();
    _pKeyboardWidget->move(0, pScreen->geometry().height() - _pKeyboardWidget->height());
#else
    _pKeyboardWidget->move(0, qApp->desktop()->height() - _pKeyboardWidget->height());
#endif

  修改前:

    setFixedSize(qApp->desktop()->width(), 380);

  修改后:

#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
    QScreen *pScreen = QApplication::primaryScreen();
    setFixedSize(pScreen->geometry().width(), 380);
#else
    setFixedSize(qApp->desktop()->width(), 380);
#endif

本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140036861


网站公告

今日签到

点亮在社区的每一天
去签到