2015-06-01 60 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 
相關問題