Qt 机器内信号的正向值

Qt 机器内信号的正向值,qt,Qt,我目前在QT中使用QStateMachine时遇到问题。基本上,我想用它来控制屏幕之间的流量,例如从母版页切换到详细页 我基本上是这样的: // Overview QState* overviewState = new QState(); overviewState->assignProperty(ui->stackedWidget, "currentIndex", 0); stateMachine->addState(overviewState); // Editor QS

我目前在QT中使用QStateMachine时遇到问题。基本上,我想用它来控制屏幕之间的流量,例如从母版页切换到详细页

我基本上是这样的:

// 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);