5

私はウィジェットのコレクションを持っていGtkEntryます。そのうちのいくつかは編集可能でフォーカス可能であり、一部はそうではありません。Edit->Copy メニュー項目を実装するために、現在どのテキストが選択されているかを確認したいと思います。gtk_editable_get_selection_boundstrue が返されるまですべてのウィジェットを反復処理する以外に、これを行う方法はありますか?

私は現在、呼び出しによって問題を回避していますgtk_clipboard_get(GDK_SELECTION_PRIMARY)が、ドキュメントによると、それは移植性がありません (また、アプリケーション内だけでなく、現在のディスプレイ内の任意の場所で選択されたテキストも取得します)。

4

1 に答える 1

3

試しましたgtk_window_get_focus ()か?ユーザーはエントリを頻繁に操作しているので、うまくいく可能性があります。ドキュメントには、「ウィンドウ内の現在フォーカスされているウィジェットを取得する」と記載されています。ここで自分で見ることができます。次に、取得したウィジェットがエントリの1つであるかどうかを比較します。

フォーカスされたエントリを取得したら、おそらくgtk_entry_get_text()を使用してそのテキストを取得したいと思うでしょうが、エントリ内のすべてのテキストを取得します。これが目的に合わない場合、解決策は、現在選択されているコンテンツのコンテンツを編集可能にコピーし(もちろん、エントリを編集可能にキャストします)、クリップボードに配置するgtk_editable_copy_clipboard()を使用することです。次に、該当する場合は、gtk_editable_paste_clipboard()を使用してコピーしたものを貼り付けます。

于 2012-05-09T05:03:10.023 に答える