我正在尝试在基于非QT的类中使用Q_ENUMS
:
#include <QMetaType>
#include <QObject>
class SignalSpec: public QObject
{
Q_ENUMS(Modulations)
public:
enum Modulations { PSK , QAM , FSK, PAM };
SignalSpec();
private:
Q_DISABLE_COPY(SignalSpec)
};
Q_DECLARE_METATYPE(SignalSpec::Modulations);
但是我在编译
Q_DISABLE_COPY(SignalSpec)
行时遇到此错误:error: 'SignalSpec::SignalSpec(const SignalSpec&)' is private
Q_DISABLE_COPY(SignalSpec)
^
问题是什么?
如何在基于非QT的类(class)中使用
Q_ENUMS
?编辑:
我只是从中创建一个对象:
SignalSpec *s=new SignalSpec();
s->setModulation(ui->modulationCombo->currentData().value<SignalSpec::Modulations>());
我也有一个此类的QVector:
QHash<QString,QVector<SignalSpec> > signalConfig;
最佳答案
Q_DISABLE_COPY
,因为在基类QObject
中已经禁用了复制构造函数。 Q_ENUM
代替Q_ENUMS
。它提供了更多功能,但需要放在枚举声明之后。 Q_GADGET
进行细分,则可以使用QObject
,但仅适用于没有信号,插槽和Q_INVOKABLE
方法的类关于c++ - 在非QT类中使用Q_ENUMS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36465005/