Qt 机器内信号的正向值
我目前在QT中使用QStateMachine时遇到问题。基本上,我想用它来控制屏幕之间的流量,例如从母版页切换到详细页 我基本上是这样的:Qt 机器内信号的正向值,qt,Qt,我目前在QT中使用QStateMachine时遇到问题。基本上,我想用它来控制屏幕之间的流量,例如从母版页切换到详细页 我基本上是这样的: // Overview QState* overviewState = new QState(); overviewState->assignProperty(ui->stackedWidget, "currentIndex", 0); stateMachine->addState(overviewState); // Editor QS
// Overview
QState* overviewState = new QState();
overviewState->assignProperty(ui->stackedWidget, "currentIndex", 0);
stateMachine->addState(overviewState);
// Editor
QState* editorState = new QState();
editorState ->assignProperty(ui->stackedWidget, "currentIndex", 1);
stateMachine->addState(editorState);
// Overview -> Editor
overviewState->addTransition(overview, SIGNAL(onEditor()), editorState);
到目前为止,这是预期的工作。概览将发出一个编辑器,并显示编辑器。但是,现在我想从信号中转发一个值。可以使用选定的值(表示用户希望编辑条目)调用编辑器,也可以不使用值(表示用户从空编辑器开始)。概览将有两个信号:onEditor
和onEditor(long)
。编辑器将有两个窗口:performinizaze
和performinizaze(long)
这就是我被困的地方。(如何)将信号从onEditor(long)
转发到performinizaze(long)
?来自QState
的信号肯定不知道该附加参数。我怎样才能解决这个问题
非常感谢。您可以将初始化分为设置和性能阶段:
void Editor::performInitialize(long val); // current implementation - keep it
void Editor::setupInitialize(long val);
m_initVal = val;
}
void Editor::performInitialize() {
performInitialize(m_initVal);
}
connect(overview, SIGNAL(onEditor(long)), editor, SLOT(setupInitialize(long)));
overviewState->addTransition(overview, SIGNAL(onEditor(long)), editorState);
addTransition
设置与信号的内部连接。Qt保证按照连接顺序执行插槽。因此,状态转换保证不会在setupInitialize
调用之前进行。非常感谢。这看起来是一个干净的解决方案,肯定会奏效。
void Editor::performInitialize(long val); // current implementation - keep it
void Editor::setupInitialize(long val);
m_initVal = val;
}
void Editor::performInitialize() {
performInitialize(m_initVal);
}
connect(overview, SIGNAL(onEditor(long)), editor, SLOT(setupInitialize(long)));
overviewState->addTransition(overview, SIGNAL(onEditor(long)), editorState);