🚀1. qDebug 是什么?

qDebug() 是 Qt 提供的 调试输出工具,作用和 C++ 的 std::cout 类似,但:

  • 用法更简单
  • 自动处理 Qt 的类型(QString、QVector 等)
  • 自动换行
  • 自动输出到 VS 的“调试输出窗口”
  • 能在发布版本关闭

属于 Qt 的日志系统:

qDebug()
qWarning()
qCritical()
qFatal()
qInfo()   ( Qt 5.5 )


🚀2. qDebug 基本用法

qDebug() << "Hello Qt!";

输出(在 VS 的 Output 窗口):

Hello Qt!


🚀3. 输出变量

int num = 10;
qDebug() <<
"num =" << num;


🚀4. 输出多个值

qDebug() << "x:" << x << "y:" << y;

如果 x = 5, y = 9:

x: 5 y: 9


🚀5. 输出 QString、QVector、QList、QPoint 等 Qt 类型(超方便)

QString name = "Tom";
qDebug() << name;

QPoint p(10, 20);
qDebug() << p;

输出:

"Tom"
QPoint(10,20)

这些 std::cout 都没法自动做到。


🚀6. 输出中文

qDebug() << "中文输出成功";

Qt 完全支持中文,不乱码。
(注意 VS 需要调试窗口编码支持 UTF-8,但一般无问题)


🚀7. 常见日志等级

函数

用途

qDebug()

普通调试输出

qInfo()

一般信息(推荐替代 qDebug)

qWarning()

警告

qCritical()

严重错误

qFatal()

致命错误(程序会直接退出)

示例:

qWarning() << "这是一个警告";

输出:

Warning: 这是一个警告


🚀8. qDebug 输出在哪里?

在 Visual Studio:
View → Output → 选择 "Debug"

必须“调试运行”(F5)才会看到。


🚀9. 在 Release(发布版本)关闭 qDebug(重要)

Qt 自动在 release 版本禁用 debug 输出,你不需要做任何事情。

也就是说:

  • Debug 版本:qDebug 会输出
  • Release 版本:qDebug 不会输出

🚀10. 自定义输出格式(进阶)

你可以让 qDebug 输出自定义格式:

qDebug().noquote() << "不带引号的字符串";
qDebug().nospace() << "a=" << 10 << "b=" << 20;

输出:

不带引号的字符串
a=10b=20


🚀11. 把 qDebug 输出到文件(日志系统)

高级项目经常用:

void myMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    QFile file(
"log.txt");
    file.open(QIODevice::Append);

    QTextStream out(&file);
    out << msg <<
"\n";
}


int main(int argc, char *argv[])
{
    qInstallMessageHandler(myMessageHandler);
    QApplication app(argc, argv);

    qDebug() <<
"应用启动"// 会写进 log.txt
    ...
}


🚀12. 和 std::cout 对比

项目

qDebug

std::cout

显示位置

调试窗口

控制台

支持 Qt 类型

自动支持

不支持

自动换行

中文支持

不一定

格式化灵活

一般

qt 项目强烈推荐使用 qDebug()。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐