c++ - QT : Templated Q_OBJECT class

标签 c++ qt templates signals-slots

是否有可能有一个模板类,它继承自 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++ - QT : Templated Q_OBJECT class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4397478/

上一篇:网页未找到

下一篇:C++11 智能指针语义

相关文章:

c++ - #pragma warning(push) 没有 #pragma warning(pop)

c++ - 如何更改 QComboBox 项目的高度大小?

Qt - 弹出菜单

c++ - 不使用模板参数的函数导致过多的代码膨胀?

c++ - 如何为不同的系统配置 NetBeans/C++ 项目?

C++ 在模板特化中的 strcmp() 中从 'char' 到 'const char*' 的无效转换

c++ - 我如何只接受大写字母作为用户输入?

c++ - 在自定义形状后剪辑自定义 qml 项目的子项

c++ - 基于继承类的模板特化

c++ - "Can' t 解析构造函数"在类中使用类型别名时