Qt qDebug 不适用于 QConsoleApplication 或 QApplication
Qt qDebug not working with QConsoleApplication or QApplication
我目前在使用 Qt 和 Qt Creator 开发程序时遇到一个非常烦人的问题。每当我尝试将 qDebug()
与 QCoreApplication
或 QApplication
在使用 qDebug()
之前实例化时,都没有任何输出,无论我是否 运行 Qt Creator 中的程序或来自正常的 shell(顺便说一句,我使用的是 Fedora Linux)。例如,即使是下面的简单代码也会失败:
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << "TestOutput!" << endl;
}
有人知道如何解决这个问题吗?
提前致谢,
马吕斯
好的,我找到问题所在了,确实是Fedora,不过是新的标准配置。看这里:
https://forum.qt.io/topic/54820/
为了更好的格式化,我添加了这个新的解决方案,marius 仍然在 this bugzilla 中自己找到了它。
编辑 ~/.config/QtProject/qtlogging.ini
并添加:
[Rules]
*.debug=true
qt.qpa.input*.debug=false
最后一行是为 moved mouse
条消息禁用垃圾邮件调试日志记录。
可在此处找到相关文档:http://doc.qt.io/qt-5/qloggingcategory.html#details
可以通过多种方式进行配置。几个有用的例子:
通过环境变量(cmd):
$ export QT_LOGGING_RULES="*.debug=true" ./app
通过环境变量(导出):
$ QT_LOGGING_RULES="*.debug=true"
$ ./app
或代码中:
#include <QCoreApplication>
#include <QLoggingCategory>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QLoggingCategory::setFilterRules("*.debug=true");
qDebug() << "Debugging;
a.exit();
}
这个对我有帮助(在用户 bashrc 文件中):
export QT_LOGGING_DEBUG=1
我目前在使用 Qt 和 Qt Creator 开发程序时遇到一个非常烦人的问题。每当我尝试将 qDebug()
与 QCoreApplication
或 QApplication
在使用 qDebug()
之前实例化时,都没有任何输出,无论我是否 运行 Qt Creator 中的程序或来自正常的 shell(顺便说一句,我使用的是 Fedora Linux)。例如,即使是下面的简单代码也会失败:
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << "TestOutput!" << endl;
}
有人知道如何解决这个问题吗? 提前致谢, 马吕斯
好的,我找到问题所在了,确实是Fedora,不过是新的标准配置。看这里: https://forum.qt.io/topic/54820/
为了更好的格式化,我添加了这个新的解决方案,marius 仍然在 this bugzilla 中自己找到了它。
编辑 ~/.config/QtProject/qtlogging.ini
并添加:
[Rules]
*.debug=true
qt.qpa.input*.debug=false
最后一行是为 moved mouse
条消息禁用垃圾邮件调试日志记录。
可在此处找到相关文档:http://doc.qt.io/qt-5/qloggingcategory.html#details
可以通过多种方式进行配置。几个有用的例子:
通过环境变量(cmd):
$ export QT_LOGGING_RULES="*.debug=true" ./app
通过环境变量(导出):
$ QT_LOGGING_RULES="*.debug=true"
$ ./app
或代码中:
#include <QCoreApplication>
#include <QLoggingCategory>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QLoggingCategory::setFilterRules("*.debug=true");
qDebug() << "Debugging;
a.exit();
}
这个对我有帮助(在用户 bashrc 文件中):
export QT_LOGGING_DEBUG=1