0
私はマルチスレッドとタイマーの細部の詳細をすべて処理するタイマークラスをカプセル化しようとしています。ここでQtConcurrent ::仮想クラスメンバーを使って実行
は私のコードです: TimedEvent.h
class TimedEvent : public QObject
{
Q_OBJECT
public:
explicit TimedEvent(QObject *parent = 0);
TimedEvent(const int intervalInMsecs);
virtual void TimeoutWorkProcedure() = 0;
private slots:
void TimeoutWorkThread();
protected:
QTimer *myTimer;
};
TimedEvent.cpp
TimedEvent::TimedEvent(QObject *parent) :
QObject(parent)
{
}
TimedEvent::TimedEvent(const int intervalInMsecs)
{
// Create timer
//
myTimer = new QTimer(this);
// Connect the timeout signal to our virtual callback function
//
connect(myTimer, SIGNAL(timeout()), this, SLOT(TimeoutWorkThread()));
myTimer->start(intervalInMsecs);
}
void TimedEvent::TimeoutWorkThread()
{
QtConcurrent::run(this, &TimedEvent::TimeoutWorkProcedure());
}
アイデアはTimedEventは、基本クラスになり、私は非常に簡単に派生クラスを作成することができるだろうでした。
class MyClass : public TimedEvent
{
public:
MyClass(const int timeoutInMsecs);
TimeoutWorkProcedure(){ do some background stuff };
};
問題は、私はQtConcurrent ::実行コールに渡すかを把握することはできませんです。これが可能であるかどうかはわかりません。 QTConcurrent :: runを派生クラスに移動することもできますが、これらの派生クラスがいくつか存在することが予想されます。
すべてのアイデアをいただければ幸いです。
K.