首先在VS里面新建Qt工程(不知道如何新建的去看一下网上的博客)。这里的工程是要用代码编写的,不使用Qt界面设计师(界面设计师不够灵活,而且生成的代码比较死板)。
然后在工程里添加我们的调试器类。
为了完整性我们再重新粘贴一下调试器类。
MyDebug.h
#ifndef __MYDEBUG_H__
#define __MYDEBUG_H__
#include"debugtext.hpp"
#endif
DebugWidget.hpp 调试器类的父类 子类包括自己实现的图形显示调试器,文本显示调试器,这里我们只需要文本显示调试器
#ifndef _DEBUGWIDGET_H__
#define _DEBUGWIDGET_H__
#include <QWidget>
#include <qtextedit.h>
#include <qlayout.h>
#include <QPainter>
class DebugWidget : public QWidget {
Q_OBJECT
public:
~DebugWidget();
protected:
DebugWidget(QWidget * parent = Q_NULLPTR);
private:
};
#endif
DebugWidget.cpp
#include "debugwidget.hpp"
#include <iostream>
#include <vector>
#include <string>
#include <ostream>
#include <fstream>
DebugWidget::DebugWidget(QWidget * parent) : QWidget(parent) {
//setWindowFlags(Qt::WindowStaysOnTopHint);
resize(1100,800);
//setAttribute(Qt::WA_DeleteOnClose, true);
}
DebugWidget::~DebugWidget() {
}
debugText.hpp 多线程单例调试输出器
#ifndef _DEBUGSTEXT_H__
#define _DEBUGSTEXT_H__
#include <QWidget>
#include <qtextedit.h>
#include <qlayout.h>
#include "debugwidget.hpp"
#include<qmutex.h>
class DebugText : public DebugWidget {
Q_OBJECT
public:
~DebugText();
void addContents(const QString& s1);
static DebugText* getDebugText();
private:
QTextEdit *ShowDebugArea;
QHBoxLayout *qlayout;
DebugText(DebugWidget * parent = Q_NULLPTR);
QMutex *mutexInDebugText;
};
extern DebugText *dt;
#endif
debugText.cpp
#include "debugtext.hpp"
#include "debugwidget.hpp"
#include <iostream>
#include <vector>
#include <string>
#include <ostream>
#include <fstream>
static DebugText *dt = NULL;
DebugText::DebugText(DebugWidget * parent) : DebugWidget(parent) {
qlayout = new QHBoxLayout(this);
ShowDebugArea = new QTextEdit(this);
ShowDebugArea->setFontPointSize(18);
qlayout->setAlignment(Qt::AlignCenter);
qlayout->addWidget(ShowDebugArea);
mutexInDebugText = new QMutex;
show();
}
DebugText::~DebugText() {
}
void DebugText::addContents(const QString& s1)
{
QMutexLocker locker(mutexInDebugText);
//mutexInDebugText->lock();
ShowDebugArea->append(s1);
show();
//mutexInDebugText->unlock();
}
static QMutex mutexInStaticDebugText;
DebugText* DebugText::getDebugText() {
QMutexLocker locker(&mutexInStaticDebugText);
if (dt == NULL)
dt = new DebugText;
return dt;
}
使用调试器类,只需要包含头文件 MyDebug.h,然后使用 DebugText::getDebugText()->addContents("dsdsdsd");
就可以输出调试信息了。如果要输出Qt字符串,可以使用 QString()显示Qt字符串 或者 QString::number(123);来输出显示数字。
这一节是准备工作,下一节开始,我们将开始介绍Qt的模型视图系统。