我正在尝试使用控制器,但使用键盘和QT / C ++,在视频游戏菜单中看到你所看到的内容。
我不知道从哪里开始,因为我不知道这个词是什么,我不知道该搜索什么。无法在Google上找到任何内容。
我正在制作一个左/右/上/下选择项目的菜单。没有鼠标输入。
请问有人可以提供一个起点吗?
答案 0 :(得分:0)
以下是处理按键操作的示例方法。
Widget
是子类QWidget
_rows
成员变量是菜单行数_row
成员变量是从0 updateSelectedMenuItem()
是一种执行任何操作以选择某个菜单项的方法,例如在屏幕上移动某些标记或更改颜色。// overriding superclass method
void Widget::keyPressEvent(QKeyEvent *ev)
{
switch(ev->key()) {
case Qt::Key_Up:
if (--_row < 0) _row = _rows-1;
updateSelectedMenuItem();
break;
case Qt::Key_Down:
if (++_row >= _rows) _row = 0;
updateSelectedMenuItem();
break;
default:
// call superclass event handler method
QWidget::keyPressEvent(ev);
}
// Note: QKeyEvent starts with isAccepted() == true
}
请注意,这将依赖于正常的键盘重复,因此它的行为与在光标移动的任何普通应用程序中向上/向下按下时的行为相同。如果您想要不同的行为(例如,如果您正在控制游戏,而不是在菜单中移动),您还应该覆盖keyReleaseEvent
,这样您就知道何时实际按下了键并再次释放。