class ListenState : public QState
{
public:
ListenState();
~ListenState();
signals:
void nextState();
public slots:
void getSettings();
};
cpp文件是
ListenState::ListenState()
{
qDebug() << "Entering ListenState";
}
ListenState::~ListenState()
{
qDebug() << "Leaving ListenState";
}
void ListenState::getSettings()
{
Commands cmd;
cmd.getSettings();
emit exited( QEvent::None ); // i want to change state now
}
我想要做的是当getSettings()
被调用时,我想将状态更改为下一个。我以为我会emit exited()
,但它没有建立。我试图创建自己的信号nextState()
,但如果我在这个函数中发出,它也不会编译。
使用上面的代码,错误是:
ListenState.cpp:23: 错误: C2664: 'QAbstractState::exited' : 无法将参数 1 从 'QEvent::Type' 转换为 'QAbstractState::QPrivateSignal' 没有可以执行此转换的用户定义转换运算符,或无法调用操作员
如果我发出自己的信号,emit nextState();
错误是:
ListenState.obj:-1:错误:LNK2001:未解析的外部符号“public:void __thiscall ListenState::nextState(void)”(?nextState@ListenState@@QAEXXZ)
当我处于原始状态时,有没有办法触发从一个状态到另一个状态的转换?