其他分享
首页 > 其他分享> > c – QT:模板化Q_OBJECT类

c – QT:模板化Q_OBJECT类

作者:互联网

是否有可能有一个模板类,它继承自QObject(并在其声明中有Q_OBJECT宏)?

我想创建像插槽适配器这样的东西,它会做一些事情,但插槽可以采取任意数量的参数(参数的数量取决于模板参数).

我只是尝试这样做,并得到链接器错误.我猜这个模板类没有调用gmake或moc.有没有办法做到这一点?也许通过显式实例化模板?

解决方法:

无法混合模板和Q_OBJECT,但如果您有类型的子集,则可以列出插槽和信号,如下所示:

    class SignalsSlots : public QObject
    {
        Q_OBJECT

    public:
        explicit SignalsSlots(QObject *parent = 0) :
            QObject(parent) {}

    public slots:
        virtual void writeAsync(int value) {}
        virtual void writeAsync(float value) {}
        virtual void writeAsync(double value) {}
        virtual void writeAsync(bool state) {}
        virtual void writeAsync(svga::SSlideSwitch::SwitchState state) {}   

    signals:
        void readAsynkPolledChanged(int value);
        void readAsynkPolledChanged(float value);
        void readAsynkPolledChanged(double value);
        void readAsynkPolledChanged(bool state);
        void readAsynkPolledChanged(svga::SSlideSwitch::SwitchState state);
    };
...
template <class T>
class Abstraction : public SignalsSlots
{...

标签:c,templates,qt,signals-slots
来源: https://codeday.me/bug/20190923/1813388.html