2015-06-01 34 views
4

我目前在开发使用Qt和Qt Creator的程序时遇到了非常恼人的问题。每当我尝试使用qDebug()QCoreApplicationQApplication在使用qDebug()之前实例化,没有任何输出,无论是在Qt Creator中运行程序还是从普通shell(我使用Fedora Linux btw)运行程序。例如,即使下面的简单代码失败:Qt qDebug不能与QConsoleApplication或QApplication配合使用

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

有没有人知道如何解决这个问题? 在此先感谢, Marius

+0

你在调试模式构建? –

+0

提供整个代码。 –

+0

我无法用您提供的代码重现您的问题。它甚至适用于发布版本。 – Carlton

回答

6

为了更好的格式化,我添加了这个新的解决方案,marius仍然发现它自己在this bugzilla

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

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

最后一行是禁用垃圾调试日志记录moved mouse消息。解决此

+0

在我的系统中,这个文件是在/ etc/XDG/QtProject/ – PaulrBear

1

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

+0

像Bugzilla的建议,我加了'〜/的.config/QtProject/qtlogging.ini'含有'[规则] *的.debug =真 qt.qpa.input *的.debug = FALSE'最后一行是到处禁用 “鼠标移动” 的消息。 – Mathias

3

文档可以在这里找到: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(); 
} 
+0

这对我来说真是棒极了 - 虽然最后我用“default.debug =真正的”以避免除了我自己的应用程序弹出调试消息 – GeekyDeaks

+0

如果你得到的一切充斥着来自特定模块的调试消息,为您提供例如有关鼠标移动的信息,您可以在环境变量中指定多个过滤器。例如: QT_LOGGING_RULES = “*调试=真实; qt.widgets.gestures.debug =假” –

0

,我(在用户的.bashrc文件)这一个帮助:

export QT_LOGGING_DEBUG=1 
相关问题