是否有可能有一个模板类,它继承自 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/