2015-06-01 15 views
4

В настоящее время у меня ужасно раздражающая проблема при разработке программ с использованием Qt и Qt Creator. Всякий раз, когда я пытаюсь использовать qDebug() с QCoreApplication или QApplication, которые были созданы до использования qDebug(), нет никакого выхода, независимо от того, запускаю ли я программу в Qt Creator или из обычной оболочки (я использую 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

Для лучшего форматирования я добавляю это новое решение, мариус все еще нашел его в this bugzilla.

Редактировать ~/.config/QtProject/qtlogging.ini и добавить:

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

Последняя строка отключить внедренный журнала отладки для moved mouse сообщений.

+0

В моей системе этот файл находился в/etc/xdg/QtProject/ – PaulrBear

+0

Я думаю, что редактирование файла в '/ etc/xdg/QtProject /' применяет настройки для всех пользователей (и для этого требуется root для редактирования), а путь в answer (создавать папки/файлы, если они отсутствуют) является однопользовательским. – Mathias

1

ОК, я выяснил, в чем проблема, на самом деле это была Fedora, но это новая стандартная конфигурация. См. Здесь: https://forum.qt.io/topic/54820/

+0

Как показано в bugzilla, я добавил '~/.config/QtProject/qtlogging.ini' содержит '[Правила] * .debug = true qt.qpa.input * .debug = false' Последняя строка - отключить сообщения« перемещенные мыши »повсюду. – Mathias

3

Docs вокруг этого можно найти здесь: 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 = true», чтобы избежать всего, кроме моего собственного приложения, извлекать отладочные сообщения. – GeekyDeaks

+0

Если вы получаете сообщения отладки от определенных модулей, предоставляя вам, например, информацию о мышь, вы можете указать несколько фильтров в переменной окружения. Например: QT_LOGGING_RULES = "*. Debug = true; qt.widgets.gestures.debug = false" –

0

Эта помощь для меня (в файле пользователя bashrc):

export QT_LOGGING_DEBUG=1 

 Смежные вопросы

  • Нет связанных вопросов^_^