[英]Using Q_ENUMS in non-QT classes
我正在嘗試在基於非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的課程中使用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
。 它提供了更多功能,但需要放在枚舉聲明之后。 QObject
,則可以使用Q_GADGET
,但僅適用於沒有信號,插槽和Q_INVOKABLE
方法的類
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.