当前位置: 首页 > news >正文

简易的QT输出调试器

    因为在VS+QT的环境下,cout以及QDebug都不好用了,所以自己定义一个QT的widget来显示调试信息。先放上源码:

#pragma once
#ifndef _DEBUGWIDGET_H__
#define _DEBUGWIDGET_H__
#include <QWidget>
#include <qtextedit.h>
#include <qlayout.h>
class DebugWidget : public QWidget {
	Q_OBJECT

public:
	DebugWidget(QWidget * parent = Q_NULLPTR);
	~DebugWidget();
	void addContents(QString);
private:
	QTextEdit *ShowDebugArea;
	QHBoxLayout *qlayout;
};


#endif

    一个简单的布局,一个QTextEdit就好了。下面看.cpp文件:

#include "debugwidget.hpp"
#include <iostream>
#include <vector>
#include <string>
#include <ostream>
#include <fstream>


using std::cout;
using std::cin;
using std::endl;
using std::ifstream;
using std::ofstream;
using std::streambuf;
using std::string;
using std::vector;

DebugWidget::DebugWidget(QWidget * parent) : QWidget(parent) {
	
	setWindowFlags(Qt::WindowStaysOnTopHint);
	resize(1100,800);
	qlayout = new QHBoxLayout(this);
	ShowDebugArea = new QTextEdit(this);
	ShowDebugArea->setFontPointSize(20);
	qlayout->setAlignment(Qt::AlignCenter);
	qlayout->addWidget(ShowDebugArea);
	setAttribute(Qt::WA_DeleteOnClose, true);
	show();
}

DebugWidget::~DebugWidget() {
	
}

void DebugWidget::addContents(QString s1)
{
	ShowDebugArea->append(s1);
}

    首先我们把调试器设置在最顶层,setWindowFlags(Qt::WindowStaysOnTopHint);  这样就不会被其他部件遮盖住,显示在最顶层也是为了查看内容方便。

    然后就设置大小以及设置布局,最后  setAttribute(Qt::WA_DeleteOnClose, true); 用来设置窗口关闭以后自动删除该类。

    该类的使用方法:

debugwidget.hpp 
debugwidget.cpp 
这两个文件是用来调试的。 
调试方法: 
使用时加上 #include "debugwidget.hpp" 头文件。 

然后 DebugWidget *dw = new DebugWidget; 
想显示什么调试信息,就使用 dw->addContents(QString); 

 

相关文章:

  • 简易的QT输出调试器2
  • XML语言数据读写理解11
  • XML语言数据读写理解12
  • XML语言数据读写理解13
  • XML语言数据读写理解14
  • XML语言数据读写理解15
  • XML语言数据读写理解16
  • QT图形显示和处理1
  • QT图形显示和处理2 坐标系统(重点)
  • QT图形显示和处理3 坐标系统(重点)
  • QT图形显示和处理4
  • QT图形显示和处理5
  • QT图形显示和处理6
  • QT图形显示和处理7
  • QT图形显示和处理8
  • Angular 4.x 动态创建组件
  • Debian下无root权限使用Python访问Oracle
  • ES6系统学习----从Apollo Client看解构赋值
  • KMP算法及优化
  • mockjs让前端开发独立于后端
  • 笨办法学C 练习34:动态数组
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 区块链共识机制优缺点对比都是什么
  • 设计模式 开闭原则
  • 我的zsh配置, 2019最新方案
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2)Java 简介
  • (C#)一个最简单的链表类
  • (二)springcloud实战之config配置中心
  • (篇九)MySQL常用内置函数
  • (区间dp) (经典例题) 石子合并
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (一)Linux+Windows下安装ffmpeg
  • ***监测系统的构建(chkrootkit )
  • .gitattributes 文件
  • .NET 8.0 发布到 IIS
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [20150904]exp slow.txt
  • [20190416]完善shared latch测试脚本2.txt
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [C++] new和delete
  • [datastore@cyberfear.com].Elbie、[thekeyishere@cock.li].Elbie勒索病毒数据怎么处理|数据解密恢复
  • [Docker]十一.Docker Swarm集群raft算法,Docker Swarm Web管理工具
  • [ExtJS5学习笔记]第三十节 sencha extjs 5表格gridpanel分组汇总
  • [FxCop.设计规则]8. 也许参数类型应该是基类型
  • [Java][Liferay] File system in liferay
  • [LeetCode 687]最长同值路径
  • [LeetCode] 93. Restore IP Addresses 复原IP地址
  • [na]wireshark抓包排错-tcp.flags.reset
  • [Oh My C++ Diary]内联函数