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