发出的信号未被导出 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".

对我来说也是新的