2015-04-18 5 views
0
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(...) в базовом классе, я emit settingsChanged().излучаемый сигнал не ловится в производном классе

В конструкторе ApplicationSettings я говорю:

connect(this, SIGNAL(settingsChanged()), this, SLOT(save())); 

Но save() никогда не вызывается.

ответ

0

Как я писал этот вопрос, я заметил, что я не включил Q_OBJECT в свой производный класс. Добавив это, сигнал был подключен правильно. Я думаю, что этот вопрос может быть полезен для других, потому что для меня также было ново, что Q_OBJECT -macro базового класса не «унаследован».

Смежные вопросы