模板中的 QTimer class

QTimer in a template class

我有一个模板 class,在我的例子中是一个状态机 class,这样我就可以用我的任何 class 类型构造它,这样它就可以调用成员函数使用函数 table 和指向成员函数的指针(有点像回调)。

它通过在 table(其中状态和事件匹配)中查找事件然后调用指向适当函数的指针来处理事件。

一切正常。我接下来要做的是添加一个计时器,以便在计时器到期时调用带有事件代码 "TIMER_EXPIRED".

的 processEvent() 函数

我的问题是在 Qt 模板中 classes 似乎不支持 slots/signals。所以,我可以添加一个 QTimer,但我无法连接它或 define/emit slots/signals.

我的替代方案是在拥有状态机的 class 中实现计时器,这很好,但是我必须对所有使用状态机的 class 执行此操作 class.

所以我不太确定下一步该往哪个方向走,有什么技巧可以用来解决这个问题吗?

我会添加示例代码,但是由于我无法在状态机中实现 QTimer class,因为我无法继承 QObject,所以目前还没有代码可以展示:(

Lambda 可以这样使用:

#pragma once

#include <QDebug>
#include <QTimer>

template< class T > class MyClass
{
public:
    MyClass()
    {
        _timer.setInterval(1000);
        // connecting the signal to the lambda
        // that will call the desired function:
        QObject::connect(&_timer, &QTimer::timeout,
                &_timer, [&](){
            theFunctionThatNeedToBeRunOnTimer();
        });
        _timer.start();
    }

    void theFunctionThatNeedToBeRunOnTimer()
    {
        qDebug() << "Timer ticked!";
    }

private:
    QTimer _timer;
};