custumthreadクラスに純粋仮想関数の『virtual void threadFunc()=0;』があり、
custumthreadクラスのスレッドを開始しますと、それを継承したthreadChildクラスの
関数『void threadFunc()』を働かせたいと考えています。
(下記のコード参照)
しかし下記のpushButtonを押しますと、『threadA->isRunning()』で突然停止します。
Q1)この不具合の改善方法を、お教え頂けないでしょうか?
void MainWindow::on_pushButton_clicked(){//threadA開始
if(!threadA->isRunning())//ここで、実行時に停止
{
ui->listWidget->addItem("on_pushButton_clicked(): threadA");
ui->label->setText("pushButton clicked()");
threadA->start();//
}
}
///T_thread/custumthread.hファイル
#ifndef CUSTUMTHREAD_H
#define CUSTUMTHREAD_H
#include <QThread>
//#include "threadchild.h"
class CustumThread : public QThread
{
Q_OBJECT//マクロ
public:
explicit CustumThread(int id);//コンストラクタ
explicit CustumThread();//コンストラクタ
void stop();
QString messageStr;
virtual void threadFunc()=0;
protected:
void run();
private:
volatile bool stopped;
};
#endif
//threadChild.hファイル
#ifndef THREADCHILD_H
#define THREADCHILD_H
#include <QThread>
#include "custumthread.h"
class ThreadChild : CustumThread
{
public:
ThreadChild();
void threadFunc();
};
#endif // THREADCHILD_H
追記
CustumThread *threadA;
CustumThreadクラスは抽象クラスなので、下記のnewが使用できないようです。
何か旨い方法はありますか?
threadA=new CustumThread(1);
以上、宜しくお願いします
回答1件
あなたの回答
tips
プレビュー