16,216
社区成员
发帖
与我相关
我的任务
分享
//main.cpp
#include "test_thread.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Test_Thread w;
w.show();
return a.exec();
}
//test_thread.h
#ifndef TEST_THREAD_H
#define TEST_THREAD_H
#include <QtWidgets/QMainWindow>
#include "ui_test_thread.h"
#include <QtWidgets/QTextBrowser>
#include <QtWidgets/QWidget>
#include <QtWidgets/QLayout>
#include<QtCore/QThread>
#include "mythread.h"
class Test_Thread : public QMainWindow
{
Q_OBJECT
public:
Test_Thread(QWidget *parent = 0);
~Test_Thread();
Ui::Test_ThreadClass ui;
QWidget *widget;
QVBoxLayout *layout;
QTextBrowser *textBrowser;
private:
void creat_Label();
QThread * t2 = new QThread();
MyObject * obj1 = new MyObject();
};
#endif // TEST_THREAD_H
//test_thread.cpp
#include "test_thread.h"
#include <QtCore/QDebug>
Test_Thread::Test_Thread(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
widget = new QWidget;
layout = new QVBoxLayout;
textBrowser = new QTextBrowser;
layout->addWidget(textBrowser);
widget->setLayout(layout);
setCentralWidget(widget);//在主窗口上显示
//把对象移动到新线程
obj1->moveToThread(t2);
t2->start();
connect(t2, SIGNAL(started()), obj1, SLOT(MyThread()));
connect(obj1, SIGNAL(sendStr(QString)), textBrowser, SLOT(setText(QString)));
}
Test_Thread::~Test_Thread()
{
delete layout;
delete textBrowser;
delete widget;
delete t2;
delete obj1;
}
//mythread.h
#ifndef MYOBJECT_H
#define MYOBJECT_H
#include<QtCore/QObject>
class MyObject :public QObject
{
Q_OBJECT
public:
MyObject();
~MyObject();
bool thread_run = true;
public slots:
void MyThread();
private:
signals:
void sendStr(QString);
};
#endif // MYOBJECT_H
//mythread.cpp
#include "mythread.h"
#include<QtCore/QThread>
#include<QtCore/QDebug>
MyObject::MyObject()
{
}
MyObject::~MyObject()
{
}
void MyObject::MyThread()
{
while (thread_run)
{
QString str = "内存还在泄漏吗?\r\n";
//_sleep(100);
emit sendStr(str);
}
}
[code=c]
[/code]
QTextBrowser *textBrowser;
private:
void creat_Label();
QThread * t2 = new QThread();
MyObject * obj1 = new MyObject();
};
这段代码是何物?从哪看的,有点辣眼睛。
这么写是不是好点
class QVBoxLayout ;
class QTextBrowser;
class QThread ;
class Test_Thread : public QMainWindow
{
Q_OBJECT
public:
Test_Thread(QWidget *parent = 0);
~Test_Thread();
private:
Ui::Test_ThreadClass ui;
QVBoxLayout *layout;
QTextBrowser *textBrowser;
QThread * t2;
};