发出的信号未被导出 class
emitted signal is not caught in derived class
class Settings : public QObject
{
Q_OBJECT
public:
Settings();
~Settings();
void setValue(QString key, QVariant value);
// [...]
signals:
void settingsChanged();
// [...]
class ApplicationSettings : public Settings
{
public:
explicit ApplicationSettings();
~ApplicationSettings();
public slots:
void save();
// [...]
每次我通过 setvalue(...)
在基础 class 中更改值时,
我做 emit settingsChanged()
.
在 ApplicationSettings
的构造函数中我说:
connect(this, SIGNAL(settingsChanged()), this, SLOT(save()));
但是 save()
从未被调用过。
在我写这个问题时,我注意到我没有在派生的 class 中包含 Q_OBJECT
。添加这个,信号连接正确。我认为这个问题对其他人可能仍然有用,因为基数 class 的 Q_OBJECT
-macro 不是 "inherited".
对我来说也是新的
class Settings : public QObject
{
Q_OBJECT
public:
Settings();
~Settings();
void setValue(QString key, QVariant value);
// [...]
signals:
void settingsChanged();
// [...]
class ApplicationSettings : public Settings
{
public:
explicit ApplicationSettings();
~ApplicationSettings();
public slots:
void save();
// [...]
每次我通过 setvalue(...)
在基础 class 中更改值时,
我做 emit settingsChanged()
.
在 ApplicationSettings
的构造函数中我说:
connect(this, SIGNAL(settingsChanged()), this, SLOT(save()));
但是 save()
从未被调用过。
在我写这个问题时,我注意到我没有在派生的 class 中包含 Q_OBJECT
。添加这个,信号连接正确。我认为这个问题对其他人可能仍然有用,因为基数 class 的 Q_OBJECT
-macro 不是 "inherited".