C++ qDebug没有';我什么也不输出
我刚刚开始使用Qt Creator V4.13和Qt V5.15.1学习Qt,当我使用qDebug()、qInfo()、qWarning()和qCritical()时,应用程序输出中没有显示任何内容 [编辑] 我已经检查了“磨合终端”,然后清理和重建项目,现在它使用“qtcreator\u process\u sub”运行,需要qDebug的输出。 .pro文件C++ qDebug没有';我什么也不输出,c++,qt,C++,Qt,我刚刚开始使用Qt Creator V4.13和Qt V5.15.1学习Qt,当我使用qDebug()、qInfo()、qWarning()和qCritical()时,应用程序输出中没有显示任何内容 [编辑] 我已经检查了“磨合终端”,然后清理和重建项目,现在它使用“qtcreator\u process\u sub”运行,需要qDebug的输出。 .pro文件 QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += w
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
TRANSLATIONS += \
ToDo_ar_EG.ts
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
MainWindow.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void addTask();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
每次编辑后都尝试了清理生成(清理并重新生成项目)
规格:
Arch Linux(系统是最新的,我刚刚更新过)
V4.13和Qt V5.15.1
CMake V3.18.2
使之成为V4.3
qmakev3.1如果选中或未选中,只需在项目->运行->运行终端下签入QtCreator即可。如果选中,请取消选中并重新运行程序。要查看LGGONG输出,您需要:
qInstallMessageHandler()
,在这种情况下,输出可能被重定向到某个地方setSeverity
的调用不会抑制日志记录(在新的Qt Creator项目中不是问题)CONFIG += console
到.pro文件,然后重新运行qmake并重新生成。或者
在Qt Creator提供的运行配置gui中启用“使用控制台运行”
步骤2:从“发布”切换到“调试”版本
CONFIG += console
为此,您可以使用左下角的Qt Creator gui。这会在.proj文件中将CONFIG
从“release”切换到“debug”。其中,告诉qmake不要生成一个makefile,该makefile使用-DQT\u NO\u DEBUG
调用编译器。因为这将禁用qDebug
级别的日志记录。
或者,自己编辑.pro文件并重新运行qmake,然后重新编译
步骤3:检查日志记录配置文件
由于qInfo()
在您的系统上也不起作用,因此在您的特定情况下,此步骤可能不是问题,但通常可能是个问题
可以通过系统和/或日志配置文件中设置的规则选择性地启用或禁用日志记录。自2015年以来,主要linux发行版(ubuntu,fedora22+)通过发行版的Qt5包中包含的系统范围的qteloging.ini
默认禁用了qDebug()
级别
在我的系统上,这意味着我有一个/usr/share/qt5/qtloging.ini
:
$ cat /usr/share/qt5/qtlogging.ini
[Rules]
*.debug=false
要在命令行上手动替代此选项,可以设置环境
来自命令行的变量:
$ export QT_LOGGING_RULES='*.debug=true'
$ ./my_program
如果您希望全局禁用调试输出,但在Qt Creator中运行时可以看到它,那么您也可以在Qt Creator中编辑“构建环境”
我建议您阅读如何配置它。另请参阅fedora ticket关于默认禁用的更改。它没有被取消选中,但我已经检查了它,它qtcreator\u process\u sub出现,qDebug消息正确显示在其中,idk如果这是预期的行为,当我取消选中它时,它返回到不工作状态。您需要一个控制台来查看日志。你要么按照Sumit的建议去做,要么在你的应用程序中添加一个控制台:
CONFIG+=console
这能回答你的问题吗?
$ export QT_LOGGING_RULES='*.debug=true'
$ ./my_program