Я знаю, мне нужен фильтр событий для Qt 4 для обработки событий клавиатуры. Но раньше у меня было что-то подобное, без необходимости вручную настраивать это. Я прочитал документацию для него, но мне не удалось установить настройку eater для приложения. Мне не нужны события, управляемые на уровне кнопок.Перемещение между кнопками с событиями клавиатуры
Вот пример кода, который иллюстрирует две кнопки, которые не будут фокусироваться или активироваться, кроме как щелчком мыши. Я бы хотел, чтобы у вас был фокус по умолчанию на одной кнопке, что я могу сделать с 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();
}
Не можете ли вы определить keyPressEvent в своем главном окне? – jdi
@jdi Я не уверен, как это сделать. –
Я понимаю, что вы уже решили свою проблему с настройкой osx, но вы можете прочитать это, чтобы понять события более подробно: http://doc.qt.nokia.com/qq/qq11-events.html – jdi