【问题标题】:Qt qDebug not working with QConsoleApplication or QApplicationQt qDebug 不适用于 QConsoleApplication 或 QApplication
【发布时间】:2015-08-15 12:10:51
【问题描述】:

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

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

有人知道如何解决这个问题吗? 提前致谢, 马吕斯

【问题讨论】:

  • 您是否在调试模式下构建?
  • 提供整个代码。
  • 我无法使用您提供的代码重现您的问题。它甚至适用于发布版本。
  • 你在哪里寻找你的输出?
  • 输出用于显示在 Qt Creator 打开的第二个控制台窗口中。我也查看了 Qt Creator 中的“应用程序输出”选项卡,但仍然没有。 Debug 和 Release 模式都不会产生所需的输出(但几天前,他们曾经这样做过,从那时起我就没有改变任何关于 Qt 的内容)。即使是这个小剪断也不起作用。

标签: c++ qt qdebug qapplication qcoreapplication


【解决方案1】:

为了更好的格式化,我添加了这个新的解决方案,marius 还是自己在this bugzilla 中找到的。

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

[Rules]
*.debug=true
qt.qpa.input*.debug=false

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

【讨论】:

  • 在我的系统上,这个文件在 /etc/xdg/QtProject/
  • 我猜想在/etc/xdg/QtProject/ 中编辑文件会为所有用户应用设置(并且需要root 才能进行编辑),而答案中的路径(如果缺少则创建文件夹/文件)仅适用于单用户。
  • 在我的系统(Fedora 29)上,它是/usr/share/qt5/qtlogging.ini
  • "/usr/share/qt5/" = [QLibraryInfo::DataPath]/qtlogging.ini 。这是全局日志记录设置的记录位置。
【解决方案2】:

可以在此处找到相关文档: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();
}

【讨论】:

  • 这对我很有用 - 尽管我最终使用了 'default.debug=true' 来避免除了我自己的应用程序之外的所有内容都弹出调试消息
  • 如果您收到大量来自特定模块的调试消息,为您提供例如有关鼠标移动的信息,您可以在环境变量中指定多个过滤器。例如:QT_LOGGING_RULES="*.debug=true;qt.widgets.gestures.debug=false"
【解决方案3】:

好的,我发现了问题所在,确实是 Fedora,但它是新的标准配置。看这里: https://forum.qt.io/topic/54820/

【讨论】:

  • 就像 bugzilla 中的建议一样,我添加了包含 [Rules] *.debug=true qt.qpa.input*.debug=false~/.config/QtProject/qtlogging.ini 最后一行是在所有地方禁用“鼠标移动”消息。
【解决方案4】:

这对我有帮助(在用户 bashrc 文件中):

export QT_LOGGING_DEBUG=1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 2011-10-11
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多