Qt qDebug不使用QConsoleApplication或QApplication

mar*_*nux 6 c++ qt qdebug qcoreapplication qapplication

在使用Qt和Qt Creator开发程序时,我目前遇到了非常烦人的问题.每当我尝试使用qDebug()一个QCoreApplicationQApplication使用前实例化qDebug(),没有任何输出,无论我在Qt Creator中或从一个普通的shell运行程序(我使用Fedora Linux系统的BTW).例如,即使是以下简单代码也会失败:

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qDebug() << "TestOutput!" << endl;
}
Run Code Online (Sandbox Code Playgroud)

有谁知道该怎么办这个问题?先谢谢,马吕斯

Mat*_*ias 9

为了更好的格式化,我添加了这个新的解决方案,marius仍然在这个bugzilla中找到了它.

编辑~/.config/QtProject/qtlogging.ini并添加:

[Rules]
*.debug=true
qt.qpa.input*.debug=false
Run Code Online (Sandbox Code Playgroud)

最后一行是禁用垃圾邮件的调试日志记录moved mouse.


5n0*_*0py 5

可以在以下位置找到有关此问题的文档:http : //doc.qt.io/qt-5/qloggingcategory.html#details

可以通过多种方式进行配置。几个有用的例子:

通过env变量(cmd):

$ export QT_LOGGING_RULES="*.debug=true" ./app
Run Code Online (Sandbox Code Playgroud)

通过env变量(导出):

$ QT_LOGGING_RULES="*.debug=true"
$ ./app
Run Code Online (Sandbox Code Playgroud)

或在代码中:

#include <QCoreApplication>
#include <QLoggingCategory>
int main(int argc, char *argv[])
{
  QCoreApplication a(argc, argv);
  QLoggingCategory::setFilterRules("*.debug=true");
  qDebug() << "Debugging;
  a.exit();
}
Run Code Online (Sandbox Code Playgroud)