Использование Qt 5.4 У меня возникают проблемы с сигналом, испускаемым из дочернего класса. Это ситуация:Qt, «нет такого сигнала» ошибка времени выполнения из дочернего класса, с макросом Q_OBJECT
Существует
class Player : public QDialog{
Q_OBJECT
/*...*/
public slots:
void ReactToAdapter(Adapter::state_t newState);
private:
Adapter* adapter;
}
class Adapter : public QObject{
Q_OBJECT
public:
enum state_t {/*...*/}
signals:
void StateChagned(state_t newState);
}
является чисто виртуальным. Одна из его Реализации дается как
class AdapterCAN : public Adapter{
O_OBJECT
/*...*/
}
AdapterCAN
излучает в StateChagned
в пределах одного из его methodes.
state_t
можно увидеть везде включая. Все три класса имеют макрос Q_OBJECT
.
Когда я пытаюсь сделать
Player::ConnectToCANBus(/*...*/){
adapter = new AdapterCAN(/*...*/);
connect(adapter, SIGNAL(StateChanged(Adapter::state_t),
this, SLOT(ReactToAdapter(Adapter::state_t));
}
Это создает сообщение об ошибке QObject::connect: No such signal AdapterCAN::StateChanged(Adapter::state_t) in ..\player.cpp:90
во время выполнения.
Похоже, что сигнал не унаследован !? У кого-нибудь есть идеи, что я могу делать неправильно? Благодаря!
Попробуйте объявить сигнал как 'void StateChagned (Adapter :: state_t);' вместо этого (с полным именем). – vahancho
Вы только что пишете ошибку в void StateChagned (state_t newState); –
@vahancho: Оставив квалифицированное имя, решила его! Спасибо! – vertigo89