找回密码
 立即注册
收起左侧

官方例子Pad Navigator改编

1
回复
5056
查看
[复制链接]

尚未签到

来源: 2019-3-23 14:01:01 显示全部楼层 |阅读模式
5Qter豆
官方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把我搞得好迷啊

回复

使用道具 举报

尚未签到

2019-3-23 20:55:55 显示全部楼层
已解决。可以直接对QT的状态Qstate进行控制
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了