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: error: C2664: 'QAbstractState::exited' : cannot convert parameter 1 from 'QEvent::Type' to 'QAbstractState::QPrivateSignal' No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
如果我发出我自己的信号与emit nextState();
的错误是:
ListenState.obj:-1: error: LNK2001: unresolved external symbol "public: void __thiscall ListenState::nextState(void)" ([email protected]@@QAEXXZ)
有触发变迁理论,从一个状态到另一个状态时的方式我处于原始状态?
有什么编译错误信息? – Andre
@Andre我更新了帖子,错误代码为 – zar
第一个错误非常简单 - 你给它的错误类型。 emit nextState();应该工作,我想。我想知道你的汇编是否有问题。你在使用标准的qmake吗?哪个版本的QT? – Andre