使用键盘事件在按钮之间移动

时间:2012-03-04 07:04:30

标签: qt qt4 keyboard

我知道我需要Qt 4的事件过滤器来处理键盘事件。但我以前有类似的工作,而无需手动配置。我已经阅读了它的文档,但是我无法为应用程序设置事件。我不需要在按钮级别管理事件。

以下示例代码说明了除鼠标单击外不会聚焦或激活的两个按钮。我希望一个按钮默认关注一个按钮,我可以使用button.setFocus()。我还希望能够通过使用选项卡导航活动的按钮,或者使用上/下键然后使用输入/空格激活。问题是我对如何实现它感到困惑。我是否需要继承一些Q *类并实现一个事件过滤器类,然后安装在对象上?或者有更简单的方法吗?

#include <QApplication>
#include <QPushButton>
#include <QWidget>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget window;
    window.resize(200, 200);

    QPushButton quit("Quit", &window);
    quit.setGeometry(10, 40, 180, 40);
    QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));

    QPushButton nothing("Do Nothing", &window);
    nothing.setGeometry(10, 80, 180, 40);

    quit.setFocus();
    window.show();
    return app.exec();
}

2 个答案:

答案 0 :(得分:1)

您无需使用标签或光标键this is the default behavior在按钮之间导航。

答案 1 :(得分:0)

请参阅QWiget::focusPolicy以防止小部件获得焦点。