3

C と gtk+ に慣れるために、テキスト エディターを作成しています。私は gtk+-2.0 & gtksourceview-2.0 と gtk_scrolled_window を使用しています。goto 関数ブラウザーを作成する最初の試みとして、ドキュメント内で見つかった関数の配列と、関数が発生する対応する行の配列を単純に作成するだけでよいと考えました。私はそれだけのことをしました。devhelp で簡単に見つけられる goto line 機能がないことに驚きました。gtk_text_view_scroll_to_mark () が (マークを作成した後に) 私が望むものであるように聞こえますが、すべての *scroll_to 関数には within_margin が必要ですが、これは正直言ってよくわかりません.:

開発者ヘルプから:

この関数の目的で有効な画面は、inside_margin のサイズのマージンだけ縮小されます。

どういう意味ですか?

私も近いですか?この行番号へのスクロール機能を作成するにはどうすればよいですか?

ありがとう。

更新:次の 3 つの関数は、バッファー内の行にスクロールするために使用されました。

gtk_text_iter_set_line (&start, lineNums[9]);
gtk_text_buffer_add_mark (tbuffer, scroll2mark, &start);  
gtk_text_view_scroll_to_mark (text_view, scroll2mark, 0.0, TRUE, 0.0, 0.17);

gtk_text_view_scroll_to_mark の最後のパラメーターは、ターゲット行番号を取得してバッファーの一番上の行に揃えるために使用されました。このパラメーターはすべての画面サイズで機能するとは限りませんが、テストしていません。

gtk_text_view_scroll_mark_onscreen 関数は行番号に近づきましたが、テキスト領域の下部から数行離れていました。

4

1 に答える 1

2

within_margin パラメータは、スクロール先のテキストが表示される画面の領域を制御します。より正確には、テキストが表示されない画面の境界のスペースの量を設定します。

これは、use_align を false に設定した場合 (つまり、画面上の特定の位置にテキストを表示したくない場合) に、テキストが画面の上部または下部に直接表示されないようにするために存在します。画面 (読みやすさの点で悪いかもしれません)。

テキストが表示される位置をまったく気にしない場合g_text_view_scroll_mark_on_screenは、テキストビューとマークのみを受け取り、それ以上の引数を使用しない which を使用できます。これにより、テキストが画面に表示されるように常に最小量がスクロールされます。

于 2012-05-17T12:53:06.917 に答える