我正在尝试执行您在使用 Controller 玩视频游戏菜单时看到的操作,但使用的是键盘和 QT/C++。
我不知道从哪里开始,因为我不知道术语是什么,所以我不知道要搜索什么。在 Google 上找不到任何内容。
我正在制作一个菜单,其中左/右/上/下选择项目。没有鼠标输入。
请问有没有人能帮忙提供一个起点?
最佳答案
这是处理按键的示例方法。
- 假定类
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
,这样你就知道什么时候键被按下并再次释放。
关于c++ - Qt/C++ - 用键遍历菜单(不是鼠标),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26403037/