vs qt 调试 输出 打印 到 输出窗口 或 控制台窗口

15 篇文章 0 订阅
6 篇文章 0 订阅

一、qt 输出

qt输出可以使用C++标准输出,C++标准输出默认输出到控制台窗口,所以需要在工程配置中先 开启 控制台窗口。

也可以使用qt内部的输出函数QDebug类、qDebug()、QMessageLogger类、qt_message_output() ,qt 自定义的输出类 默认 输出到qt ide 的 应用程序输出面板 (application output panel) ,qt 自定义的输出类 也可以控制输出到 控制台窗口

参考:qt 日志输出 QMessageLogger QDebug QLoggingCategory CSDN博客 

1、qt 自定义的输出类 输出到 控制台窗口Console 操作

printf()、fprintf(stdout...)、fpritnf(stderr...) 这些是C++的标准输出,只能输出到显示到 控制台窗口(console window)。当qt输出没有开启控制台窗口的时候,标准输出都无法显示。只有qt ide 开启控制台窗口以及在pro中设置输出到控制台窗口,才能将标准输出显示出来。下面两个步骤是设置输出到 控制台窗口 以及 开启控制台窗口。

1、在.pro 文件中添加 CONFIG += console, qt 日志输出将显示到控制台(DOS)窗口,qDebug()输出的信息将输出到控制台(DOS)窗口

等价于 在 项目配置中 ,qmake 额外参数项中加入 "CONFIG+=console"

2、勾选run in terminal ,显示控制台窗口,不勾选的话,将无法显示控制台(DOS)窗口

可能存在设置完之后控制台窗口无法显示的情况,需要选中工程,右键选择 清理、构建。

3、 控制qDebug() 、QDebug对象、QMessageLogger对象输出到 控制台窗口 。

开启了控制台后,可以设置qDebug() 、QDebug对象、QMessageLogger对象 输出到 应用程序输出面板 的内容也输出到控制台。

需要在qt环境变量中添加 QT_FORCE_STDERR_LOGGING ,并设置值为1

测试结果 

设置控制台字体及大小 C++ -CSDN博客  

2、关于脚本文件的日志输入和输出

脚本文件(*.pro,*.prl,*.pri,*.conf,*.prf)是由qmake进行解释的,在编译器编译之前,qmake会对这些文件进行操作。可以通过message()/warning()/error()等函数输出到qt creator的概要信息窗口。脚本有提供一个promt的输入函数,但是需要在dos窗口中通过命令行运行qmake才能进行输入。
参考 prompt(question, [decorate]) 

qt输出 汉字显示 与 乱码解决 qt 汉字输出 显示乱码 解决-CSDN博客 

二、visual studio

1、vs 中有一个OutputDebugString (Windows.h中)函数,在所有窗体程序中都可以输出到vs的输出窗口,在调试窗体程序,无控制台窗口时,想打印参数,那么这个函数就很有用了。

2、MFC中,有TRACE() 将信息输入到控制台窗口中和输出窗口中。


在CONSOLE程序(windows默认)或者WINDOWS程序中,输入到输出窗口需要调用OutputDebugString(argv[i]);  并包含Windows.h的头文件,但是该函数不会输出到控制台窗口。、设置vs中窗体程序不显示控制台窗口,需要将子系统改为:窗口 (/SUBSYSTEM:WINDOWS)。并 根据情况设置main函数名称及其 参数。

如果想让程序不显示任何窗口,选用console子系统,并在程序开始加上这句话:(参考:VS2010隐藏控制台程序的黑框_缎锦小妹的博客-CSDN博客
“#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )”

  • 9
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要将Qt的工作台输出改到Qt界面输出,可以使用QTextEdit控件来显示输出信息。首先,需要在主窗口类中创建一个QTextEdit对象,用于显示输出信息。然后,使用qInstallMessageHandler函数来自定义消息处理流程,将输出信息重定向到QTextEdit控件中。 在主窗口类的构造函数中,创建一个QTextEdit对象,并设置其属性和大小。然后,使用qInstallMessageHandler函数来设置自定义的消息处理函数。在消息处理函数中,将输出信息追加到QTextEdit控件中。 以下是示例代码: ```cpp // 在主窗口类中定义一个QTextEdit对象 QTextEdit *debugEdit; // 自定义消息处理函数 void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg) { // 根据消息类型设置输出格式 QString output; switch (type) { case QtDebugMsg: output = QString("Debug: %1").arg(msg); break; case QtWarningMsg: output = QString("Warning: %1").arg(msg); break; case QtCriticalMsg: output = QString("Critical: %1").arg(msg); break; case QtFatalMsg: output = QString("Fatal: %1").arg(msg); break; default: break; } // 将输出信息追加到QTextEdit控件中 debugEdit->append(output); } // 在主窗口类的构造函数中设置QTextEdit控件和消息处理函数 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { // 创建QTextEdit对象 debugEdit = new QTextEdit(); debugEdit->setWindowTitle("调试窗口"); debugEdit->resize(500, 300); debugEdit->setAttribute(Qt::WA_QuitOnClose, false); debugEdit->hide(); // 设置自定义的消息处理函数 qInstallMessageHandler(outputMessage); } ``` 通过以上代码,你可以将Qt的工作台输出改到Qt界面输出,将输出信息显示在QTextEdit控件中。 #### 引用[.reference_title] - *1* *3* [QT 日志输出控制台、控件、文件](https://blog.csdn.net/weixin_49569127/article/details/123201370)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [QT 学习笔记(六)](https://blog.csdn.net/weixin_45891612/article/details/128087543)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值