キーボードイベントを処理するためにQt 4のイベントフィルタが必要なことは知っています。しかし私はこれまで手動でこれを設定する必要はなく、これまで同様の作業を行っていました。私はそれのためのドキュメントを読んだが、私はアプリケーションのためのイベントの儀式のセットアップを得ることができませんでした。ボタンレベルで管理されるイベントは必要ありません。キーボードイベントでボタン間を移動する
ここでは、マウスクリック以外の場合にフォーカスまたはアクティブにならない2つのボタンを示すコード例を示します。私はbutton.setFocus()
で行うことができる1つのボタンにデフォルトで焦点を当てたいと思います。私はまた、タブを使用してアクティブなボタン、または上/下のキーを入力して/スペースでアクティブにすることができるようにナビゲートすることができるようにしたいと思います。問題は、それを実装する方法が混乱していることです。 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