Перемещение между кнопками с событиями клавиатуры - PullRequest
1 голос
/ 04 марта 2012

Я знаю, что мне нужен фильтр событий для 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 ]

1 голос
/ 04 марта 2012

Вам не нужно ничего делать, чтобы иметь возможность перемещаться между кнопками с помощью клавиш табуляции или курсора, это поведение по умолчанию .

0 голосов
/ 04 марта 2012

См. QWiget :: focusPolicy для предотвращения фокусировки виджетов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...