qDebug()&lt; <qstring no =“”more =“”compiling =“”

时间:2017-06-21 18:43:33

标签: qt qdebug

=“”

我在Qt 5.3中构建了一个QWidgets应用程序.1并且在某些地方使用了

qDebug() << msg;

其中msg是QString。 我已经编译并运行了几年,但今晚我决定重新编译它并得到消息:

D:\devt\myapp\extcoder.cpp:29: error: no matching function for call to 'QMessageLogger::debug()'
 qDebug()<<msg;
        ^

事实上,我在前一天写的另一个应用程序中遇到了类似的问题,通过试验我认为我已经通过qDebug(msg)替换这些调用来修复它。 但看起来好像某种软件腐烂了! 有任何想法吗?当然文件以

开头
#include <QDebug>

为了测试这个问题,我构建了一个准系统QWidgets应用程序(QMainWindow类),我编写的唯一代码是(除了#include)

qDebug()<<"Hello world";
MainWindow构造函数中的

。我得到了完全相同的编译错误。

3 个答案:

答案 0 :(得分:0)

Qt。

支持

QDebug &QDebug::operator<<(const QString &s)

输出示例:

QString s;

s = "a";
qDebug().noquote() << s;    // prints: a
qDebug() << s;              // prints: "a"

您的Qt环境必须破坏。请检查您的环境并在需要时重新安装Qt。

答案 1 :(得分:0)

重新安装Qt使qDebug()<<s再次工作。

这确实是一种“软件腐烂”:我在制作了原版的副本后重新安装了qt 5.3.1,所以我可以将新版本与旧版本进行比较。

使用Winmerge我能够发现错误: 我不确切知道它是如何发生但文件qlogging.h已损坏。 这是发生的事情:在第118和第120行,两个版本的调试声明被重写为NBIS_debug。 现在我努力尝试从NBIS移植免费软件。在某些阶段,我必须将调试函数从debug重命名为NBIS_debug,并且此修改必须一直传播到qlogging.h。

答案 2 :(得分:0)

我不得不重新安装Ubuntu和Qt。仅重新安装Qt没有帮助。