//myproject.h
#include <QDialog>
#include <QWidget>
#include <QLineEdit>
class MyProjiect : public QWidget
{
Q_OBJECT
public:
MyProjiect(QWidget *parent=0);
~MyProjiect();
QPushButton * pOk;
signals:
emitSaveTOsignal(QList<QString>);
public slots:
slotSave();
};
//myproject.cpp
#include "myproject.h"
MyProjiect::MyProjiect()
{
pOk = new QPushButton;
pOk->setText("enter");
pOk->setFixedSize(306, 40);
connect(pOk, SIGNAL(clicked()), this, SLOT(slotSave()));//连接1
m_thread = new ThreadHandle();//该类必须是QObject的子类
connect(pOk, SIGNAL(emitSaveTOsignal(QList<QString>)), m_thread, SLOT(slotFunc(QList<QString>)));//接连2
//(开始执行线程)
m_thread->start();
}
MyProjiect::slotSave() 通过连接1的槽函数 进行入参赋值, 在通过信号传参
{
QList<QString> strlist;
strlist.at(0) = QString("filepath...");
strlist.at(1) = QString("data");
/* ........ */
emit(emitSaveTOsignal(strlist));
}
MyProjiect::~MyProjiect()
{
}
//threadhandle.h
#ifndef THREADHANDLE_H
#define THREADHANDLE_H
#include <QObject>
#include <QThread>
class ThreadHandle : public QThread
{
Q_OBJECT
public:
ThreadHandle(QWidget *parent = 0);
~ThreadHandle();
protected:
void run();
public:
bool signalFlag;
QString signalInfo;
QString filepath;
QString timeStamp;
bool fun(QString filepath);
bool fun_1(QString filepath);
bool fun_2(QString filepath);
private slots:
void slotFunc(QList<QString> sList);
};
#endif // THREADHANDLE_H
//threadhandle.cpp
#include "threadhandle.h"
ThreadHandle::ThreadHandle(QWidget *parent)
: QThread()
{
signalFlag = false;
signalInfo = "\0";
filepath = "\0";
timeStamp = "\0";
}
void ThreadHandle::run()
{
while (1)
{
if (signalFlag == true)
{
if (signalInfo == "A")
{
func(filepath);
signalInfo = "\0";
timeStamp = "\0";
}
else if (signalInfo == "B")
{
func_1(filepath);
signalInfo = "\0";
timeStamp = "\0";
}
else if (signalInfo == "C")
{
func_2(filepath);
signalInfo = "\0";
timeStamp = "\0";
}
signalFlag = false;
}
}
}
bool ThreadHandle::func(QString filepath)
{
}
bool ThreadHandle::func_1(QString filepath)
{
}
bool ThreadHandle::func_2(QString filepath)
{
}
void ThreadHandle::slotFunc(QList<QString> sList)
{
signalInfo = sList.at(0);
filepath = sList.at(1);
timeStamp = sList.at(2);
signalFlag = true;
}
ThreadHandle::~ThreadHandle()
{
}