我刚刚开始使用QtCreatorV4.13和QtV5.15.1学习Qt,当我使用qDebug()、qInfo()、qWarning()和qCritical()时,它在应用程序输出中没有显示任何内容。
编辑我选中了“运行在终端”,然后清理和重建项目,现在使用"qtcreator_process_sub“运行qDebug.所需的输出。
.pro文件
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 += targetMainWindow.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_HMainWindow.cpp文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QtWidgets/QPushButton"
#include "QDebug"
#include <iostream>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->addTaskButton, &QPushButton::clicked, this, &MainWindow::addTask);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::addTask()
{
qDebug()<<"Debug button";
qInfo()<<"Information output";
qWarning()<<"Warning output";
qCritical()<<"Critical output";
}我花了两天时间在谷歌搜索,但所有的答案都是关于未定义的QT_NO_DEBUG_OUTPUT,但它是定义的。我尝试过的是:包含"QtDebug“而不是"qDebug”,用内容创建qtlogging.ini:-
[Rules]
*.debug=true每次编辑后尝试一个干净的构建(清理和重建项目)。
规格:
Arch Linux (系统是最新的,我刚刚更新了它)
V4.13和Qt V5.15.1
CMake V3.18.2
制造V4.3
QMake V3.1
发布于 2021-04-02 01:19:43
要查看日志输出,您需要:
qInstallMessageHandler(),其中他的输出可能被重定向到某个地方。setSeverity的调用所抑制(在新的Qt项目中不是问题)。步骤1:要为应用程序配置控制台,添加
CONFIG += console到您的.pro文件,然后重新运行qmake并重新构建。或者,在Qt提供的中启用“使用控制台运行”。
步骤2:从“版本”切换到“调试”生成
为此,您可以在左下角使用的gui。这会将CONFIG从“释放”切换到.proj文件中的“调试”。它告诉qmake不要生成一个makefile,它用-DQT_NO_DEBUG调用编译器。因为这将禁用qDebug-level日志记录。或者,自己编辑.pro文件并重新运行qmake,然后重新编译。
步骤3:检查日志配置文件
由于qInfo()在您的系统上都不起作用,所以这一步在您的特定情况下可能不是问题,但它通常是一个问题。
可以通过在系统和/或日志信任文件中设置的规则选择性地启用或禁用日志记录。自2015年以来,在主要的linux发行版(ubuntu,fedora22+)上,默认情况下,qDebug()级别通过一个系统范围的qtlogging.ini禁用,该qtlogging.ini包含在发行版的Qt5包中。
在我的系统中,这意味着我有一个/usr/share/qt5/qtlogging.ini
$ cat /usr/share/qt5/qtlogging.ini
[Rules]
*.debug=false若要在命令行中手动重写此操作,可以从命令行中设置环境变量:
$ export QT_LOGGING_RULES='*.debug=true'
$ ./my_program您还可以编辑Qt中的"build环境“,如果要使调试输出保持全局禁用,但是在Qt中运行时可以看到它。
我建议您阅读QLoggingCategory日志规则来了解如何配置它。还请参阅关于默认禁用更改的这 fedora票证。
发布于 2020-09-14 05:16:26
只要签入unchecked下的Projects->Run->运行在终端,如果它被选中或未被选中。如果它被选中,取消检查并重新运行程序.
https://stackoverflow.com/questions/63878316
复制相似问题