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