2011-12-15 28 views
9

をキャプチャしようとしていますGtkEntryを押したときにと入力してください。私が提案するactivate信号への接続を発見したリソースが、documentation for GtkEntry状態(強調鉱山)のほとんどは:キャプチャ方法GtkEntryでEnterキーを押す

は、アプリケーションがそれに接続するべきではありませんが、彼らが必要な場合は g_signal_emit_by_name()でそれを放出することができますプログラムによって起動 を制御します。

私は、この背後にある根拠と一般的に受け入れられている代替案について興味があります。私はkey-press-eventシグナルに接続してキーコードを確認できることを知っていますが、より洗練されたソリューションがあるかどうかは疑問です。

+0

私はドキュメントのことをよく知っていますが、私はいつも使っていますが、今までのところトラブルは発生していません。もし私があなただったら、私は使用して、テストが終わっていないかどうかを調べるでしょう。GtkEntryソースの背後にあるコードをチェックして、それがあなたのニーズに合っていないかどうかを調べることはできますが。 – erick2red

答えて

9

これはキーバインディング信号です。つまり、を入力すると、入力にを入力するようにGTKが設定されます。 シミュレートを入力するので、信号が実際にキー押下の結果であったという保証はありません。

キープレスをキャプチャする場合は、key-press-eventに接続するのが最善の方法です。

しかし、なぜ私はactivateシグナルを使用できないのかわかりません。ほとんどのキーバインディング信号は接続されるべきではありませんが、これは理にかなっています。 gtk-develメーリングリストの明確化を求めてもらうか、bugzilla.gnome.orgにバグを報告して、このシグナルのドキュメントを明確にするべきだと言います。

+1

完了しました。お返事をありがとうございます。 https://bugzilla.gnome.org/show_bug.cgi?id=666364 –

2

起動信号のために述べたGtkEntryのドキュメント:

アプリケーションは、それに接続するべきではありませんが、彼らは、プログラムの起動 を制御する必要がある場合 g_signal_emit_by_name()でそれを放出することができます。この信号はキーバインド信号として使用されているが、それは一般的にも、エントリの活性化を遮断するアプリケーションによって使用される ある

...に変更されました。

これはコミット4a25bac0e7685000fff90a211db6ac60f6b74ab1で2012-06-11に発生しました。コミットメッセージは次のとおりです。GtkEntryのため

更新ドキュメント::

「あなたが接続してはならない」 この信号からのメッセージを削除を活性化させます。これはキーバインディング信号ですが、アプリケーションからの の使用は問題なく、実際には期待されています。

関連する問題