Qt4源码在Qt5中打开遇到的问题总结
来源:互联网 发布:热能感应软件 编辑:程序博客网 时间:2024/05/21 07:51
QtWidgets作为一个独立的模块
例如编译时错误
- error:
QMainWindow: No such file or directory - error:
QToolButton: No such file or directory - error:
QWidget: No such file or directory
解决办法:
在*.pro文件里添加:
- QT
+= widgets
更改
- #include
为
- #include
程序现在应该就可以运行了,但是有时可能需要更加明确的包含
- #include
QtWebKitWidgets也是一个独立的模块:
例如编译时错误
- error:
invalid use of incomplete type 'class QWebFrame' - error:
forward declaration of 'class QWebFrame'
解决办法:
在*.pro文件里添加:
- QT
+= webkitwidgets
注意:当有QT += webkitwidgets的时候,就不再需要QT += widgets
此外,更改
- #inclue
为
- #include
打印机不工作
如果你的代码有以下几行:
- #include
- #include
将以下内容添加到项目文件中:
- Qt
+= printsupport
同样,有时可能仍无法正常工作,需要指定:
- #includeQPrinter>
- #include
QPrintDialog>
toAscii()和fromAscii()已被弃用
替换
- fromAscii()
- toAscii()
为
- fromLatin1()
- toLatin1()
例如,给定的Qt4代码
- QByteArry
configfileti =TMP_Config. toAscii();
变为
- QByteArry configfileti
= TMP_Config. toLatin1();
QCoreApplication::UnicodeUTF8已被弃用
- Href_Gui->setWindowTitle(QApplication::translate("Href_Gui",
"Url / www", 0, QApplication::UnicodeUTF8)); - label->setText(QApplication::translate("Href_Gui",
"Text:", 0, QApplication::UnicodeUTF8)); - label_2->setText(QApplication::translate("Href_Gui",
"Url:", 0, QApplication::UnicodeUTF8)); - label_3->setText(QApplication::translate("Href_Gui",
"Target / Name:", 0, QApplication::UnicodeUTF8));
变为
- Href_Gui->setWindowTitle(QApplication::translate("Href_Gui",
"Url / www", 0)); - label->setText(QApplication::translate("Href_Gui",
"Text:", 0)); - label_2->setText(QApplication::translate("Href_Gui",
"Url:", 0)); - label_3->setText(QApplication::translate("Href_Gui",
"Target / Name:", 0));
QWorkspace已被弃用
更换
- #include
为
- #include
QDrag问题
拖动功能的应用程序将需要一些调整。如:
QDrag *drag = new QDrag(event->widget());
在Qt5中将产生错误
- error:
no matching function for call to 'QDrag::QDrag(QWidget*)'
要解决这个附加组件,其中包括:
- #include
qFindChildren已被弃用
这种方式会弹出一个错误:
- error:
'qFindChildren' was not declared in this scope
为了解决这个问题,将qFindChildren替换为findChildren,例如
- toString(const
QObject* obj, int indentLevel) const { - [...]
if (m_children) { QList<</span>QObject*> childlist = qFindChildren<</span>QObject*>(obj, QString()); - [...]
替换
- QList<</span>QObject*>
childlist = qFindChildren<</span>QObject*>(obj, QString());
为
- QList<</span>QObject*>
childlist = obj->findChildren<</span>QObject*>(QString());
qVariantValue已被弃用
编译器会出现
- error:
'qVariantValue' was not declared in this scope
此功能相当于的QVariant::value(value)。因此,如果指定QVariant val应改写
- QTime
t = qVariantValue<</span>QTime>(val);
为
- QTime
t = val.value<</span>QTime>();
- s.setValue("color/favorite",
qVariantValue<</span>QColor>(m_color));
为
- s.setValue("color/favorite",
m_color.value());
qVariantCanConvert已被弃用
替换
- Q_ASSERT(qVariantCanConvert<</span>QString>(variant));
- Q_ASSERT(qVariantCanConvert<</span>QSize>(variant));
- Q_ASSERT(qVariantCanConvert<</span>QFont>(fontVariant));
为
- Q_ASSERT(variant.canConvert(QMetaType::QString));
- Q_ASSERT(variant.canConvert(QMetaType::QSize));
- Q_ASSERT(fontVariant.canConvert(QMetaType::QFont));
Qt::escape已被弃用
- error:
'escape' is not a member of 'Qt'
所以应该更改下面代码:
if (result == QString()) result = Qt::escape(val.toString()); else result = Qt::escape(result); return result;
为
if (result == QString()) result = QString(val.toString()).toHtmlEscaped(); else result = QString(result).toHtmlEscaped(); return result;
QDesktopServices::storageLocation已被弃用
- error:
'storageLocation' is not a member of 'QDesktopServices' - error:
'DataLocation' is not a member of 'QDesktopServices'
使用QStandardPaths::StandardLocation,替换
- QString
path = s.value("db.path",QDesktopServices::storageLocation(QDesktopServices::DataLocation)).toString();
为
- QString
path = s.value("db.path",QStandardPaths::standardLocations(QStandardPaths::DataLocation)).toString();
QtMutimedia替换了Phonon
CONFIG+= qtestlib 已被弃用
如果在项目文件中使用,则编译器会发出警告,尽管如此代码将照常运行:
- Project WARNING:
CONFIG+=qtestlib is deprecated. Use QT+=testlib instead.
QWeakPointer怪异
如下代码
- quint64 decodedPointer
= line.toULongLong(); - MetaData
*md = reinterpret_cast<</span>MetaData*>(decodedPointer); - QWeakPointer<</span>MetaData>
wp(md);
结果
- error:
no matching function for call to 'QWeakPointer::QWeakPointer(MetaData*&)'
为了解决这个问题,将下面代码添加到项目文件:
- DEFINES
+= QT_DISABLE_DEPRECATED_BEFORE=0
QtConcurrent库的失踪了?
- C:\Qt\Qt5.0.2\5.0.2\mingw47_32\include\QtConcurrent\qtconcurrentthreadengine
.h:133: error: undefined reference to `_imp___ZN12QtConcurrent16Thread EngineBaseD2Ev'
- m_current
= QtConcurrent::blockingMappedReduced(slices, functor, stitchReduce,QtConcurrent::UnorderedReduce );
则将需要包含头:
- #includeQtConcurrent>
到项目文件,并添加下面一行:
- LIBS
+= -lQt5Concurrent
固定的#include <>头
插件加载
- Qt4源码在Qt5中打开遇到的问题总结
- Qt4转Qt5遇到的问题
- 从VS2008+QT4到VS2015+QT5迁移过程中遇到的问题及解决方法
- 将某个Qt4项目升级到Qt5遇到的问题
- Qt4项目升级到Qt5可能遇到的问题
- Qt4项目升级到QT5遇到的问题与解决办法
- 将某个Qt4项目升级到Qt5遇到的问题
- 将某个Qt4项目升级到Qt5遇到的问题
- 将某个Qt4项目升级到Qt5遇到的问题
- Qt4项目移植到Qt5遇到的问题(更新)
- qt4项目迁移到qt5,遇到的问题及解决办法
- Qt4升级到Qt5所遇到的问题的解决方法(qt4转qt5的问题及解决方法)
- shadowsocks-qt5使用中遇到问题总结
- Qt4转到Qt5的问题
- qt4->qt5的相关问题
- Qt4的程序如何在Qt5中运行
- 编写可以在Qt4、Qt5中同时执行的代码
- Qt5 遇到的问题
- Android进步之路之基础篇:eclipse快捷键
- session_id()作用
- 想做web开发 就学JavaScript
- Android 之 Window、WindowManager 与窗口管理
- html基础
- Qt4源码在Qt5中打开遇到的问题总结
- 搭建CA,二级CA,和签发证书
- xcode开发中的小技巧
- 位运算的威力
- ORTP中的API函数说明
- 关于Gson序列化与反序列化的一些总结
- struts2工作流程
- 想靠写代码吃饭 这些你一定要会
- CentOS 7安装C++帮助文档