|
qq1043068972 发表于 2015-8-25 19:39
你这相当于是主线程向子线程发射信号吧? 可以在主线程的构造函数里这么写: connect(this,发射的信号,子线 ...
这是我的代码,不知道写的对不对,运行之后 error: 'ControlThread' does not name a type
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include "controlthread.h"
#include <QThread>
namespace Ui {
class Widget;
}
class QPushButton;
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
int num;
private:
Ui::Widget *ui;
ControlThread control;
signals:
void data(int n);
public slots:
void receivecolor(int m);
private slots:
void on_pushButton_clicked();
};
#endif // WIDGET_H
widget.cpp
#include <QtGui>
#include "widget.h"
#include "ui_widget.h"
#include <QThread>
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
qDebug()<<"ada"<<endl;
connect(this,SIGNAL(data(int)),&control,SLOT(receiveData(int)));
connect(&control,SIGNAL(turncolor(int)),this,SLOT(receivecolor(int)));
}
Widget::~Widget()
{
delete ui;
}
void Widget:n_pushButton_clicked()
{
num=ui->lineEdit->text().toInt();
control.start();
emit data(num);
}
void Widget::receivecolor(int m)
{
QPixmap pix;
if(m==1)
{
pix.load( "D:/maydayadagdbobbylyf/000/Images/green.png" );
ui->label->setPixmap(pix);
}
else if(m==0)
{
pix.load( "D:/maydayadagdbobbylyf/000/Images/red.png" );
ui->label->setPixmap(pix);
}
}
controlthread.h
#ifndef CONTROLTHREAD_H
#define CONTROLTHREAD_H
#include "widget.h"
#include <QThread>
class ControlThread : public QThread
{
public:
ControlThread();
void run();
public slots:
void receiveData(int n);
private:
signals:
void turncolor(int m);
protected:
};
#endif // CONTROLTHREAD_H
controlthread.cpp
#include "controlthread.h"
#include <QDebug>
#include <QObject>
#include <QThread>
ControlThread::ControlThread()
{
}
void ControlThread::run()
{
exec();
}
void ControlThread::receiveData(int n)
{
if(n==1)
{
qDebug()<<"连接正确"<<endl;
emit turncolor(1);
}
else if(n==0)
{
qDebug()<<"连接错误"<<endl;
emit turncolor(0);
}
}
|
|