若该文为原创文章,转载请注明原文出处
本文章博客地址: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);
#elsesetFixedSize(qApp->desktop()->width(), 380);
#endif
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140036861