官方example的代码和文档可直接百度“pad navigator”
我的目标是:在原来example的基础上,加一条功能:选择不同的图标进入多个不同的对话框,即对选中的图标进行识别后,知道是哪一个后,按回车能转进不同的对话框里面(不同的响应)。简单来说,原来的例子中,选中每个图标(icon)后按回车切换到对话框界面,但无论选中那个图标,切到的都是同一个界面,现在有多个对话框,想根据选中的图标控制切换到对应对话框。
我不理解的是在这个过程中如何进行信息传递,即源代码是分两路进行处理的,一路识别方向键确定选中框(如下),
// Enable key navigation using state transitions
for (int y = 0; y < rows; ++y) {
for (int x = 0; x < columns; ++x) {
QState state = stateGrid[y][x];
QKeyEventTransition rightTransition = new QKeyEventTransition(this, QEvent::KeyPress,
Qt::Key_Right, state);
QKeyEventTransition leftTransition = new QKeyEventTransition(this, QEvent::KeyPress,
Qt::Key_Left, state);
QKeyEventTransition downTransition = new QKeyEventTransition(this, QEvent::KeyPress,
Qt::Key_Down, state);
QKeyEventTransition *upTransition = new QKeyEventTransition(this, QEvent::KeyPress,
Qt::Key_Up, state);
rightTransition->setTargetState(stateGrid[y][(x + 1) % columns]);
leftTransition->setTargetState(stateGrid[y][((x - 1) + columns) % columns]);
downTransition->setTargetState(stateGrid[(y + 1) % rows][x]);
upTransition->setTargetState(stateGrid[((y - 1) + rows) % rows][x]);
另一路识别回车键进行对话框切换:
QKeyEventTransition enterTransition = new QKeyEventTransition(this, QEvent::KeyPress,
Qt::Key_Enter, backState);
QKeyEventTransition returnTransition = new QKeyEventTransition(this, QEvent::KeyPress,
Qt::Key_Return, backState);
QKeyEventTransition backEnterTransition = new QKeyEventTransition(this, QEvent::KeyPress,
Qt::Key_Enter, frontState);
QKeyEventTransition backReturnTransition = new QKeyEventTransition(this, QEvent::KeyPress,
Qt::Key_Return, frontState);
enterTransition->setTargetState(historyState);
returnTransition->setTargetState(historyState);
backEnterTransition->setTargetState(backState);
backReturnTransition->setTargetState(backState);
enterTransition->addAnimation(flipAnimation);
returnTransition->addAnimation(flipAnimation);
backEnterTransition->addAnimation(flipAnimation);
backReturnTransition->addAnimation(flipAnimation);
现在在切换对话框过程中想知道选的哪个图标,这个信息应该得从哪里找呢?Qstate把我搞得好迷啊 |