2017-04-14 18 views
1

非常に長いテキスト入力を含む可能性があるComboboxesを使用しているので、コンボボックスの幅を合理的なサイズをはるかに超えて広げる の 私は最大幅をコンボボックス。コンボボックスのGtk(mm)制限幅

私はこのようにこれをやっている場合:

class MyCombo : public Gtk::ComboBox { 
    private: 
     CellRendererText render; 
    public: 
     MyCombo() { 
      render.property_width_chars() = 10; 
      render.property_ellipsize() = Pango::ELLIPSIZE_END; 
      pack_start(render, true); 
     } 
}; 

結果は、私は、表示する列を指定していなかったので、論理的なようで所望の幅の空のセルになります。しかし、私はその試みでこれをどうやって行うことができますか?レンダラをバイパスちょうどます使用pack_start ...

別のアプローチは、このいずれかになります。

class MyCombo : public Gtk::ComboBox { 
    private: 
     CellRendererText render; 
    public: 
     MyCombo() { 
      pack_start(render, true); 
      set_cell_data_func(render, sigc::mem_fun(*this, &MyCombo::render_iter)); 
     } 

     void render_iter(const TreeModel::const_iterator& iter) { 
      Glib::ustring data = get_string_from_iter(iter); 
      int desired_width_chars = 10; //for example 
      render.property_text() = ellipsize_string(data, desired_width_chars); 
     } 
}; 

そのアプローチを使用して、それは動作しますが、ポップアップのテキストが(何uはコンボボックスをクリックすると開きます)また、私は望んでいないものが短くなっています(明らかに、ユーザーは文字列全体を読むことができるはずです。)

私にこれを手伝ってもらえますか?私は、アドバイス/代替ソリューションに満足しています。

よろしくは

+0

コンボボックスの幅を制限したいが、コンボボックスの幅を制限したくないのですか? – theGtknerd

+0

。そして、これは一般的な行動であると思われるので、私は本当に必死です。( – tagelicht

答えて

1

をtagelichtこれは、あなたが探しているものかもしれ:

cell_renderer_text.set_wrap_width(10) 

これは、Pythonのためですが、残念ながら、ドキュメントが不足している

:-)アイデアを得ます。私は、Anjuta/Gladeを突き抜けてこれを見つけました。

編集:

ドキュメントがhereです。彼らは過度に役立つわけではありませんが、存在しています。代替案として

+0

それは完璧な感謝:)それは魅力的なように動作します....しかし、あなたは正しいドキュメントはホーリーです..私は質問する前にこれを検索する時間を費やし、これらのプロパティはまったくドキュメントを持っていません... – tagelicht

0

、wrap_widthを設定したり(のGtk#で)コンボボックスをサブクラス化することなく、私のために、次の作品:

ComboBoxText cb = new ComboBoxText(); 
cb.Hexpand = true; //If there's available space, we use it 
CellRendererText renderer = (cb.Cells[0] as CellRendererText); //Get the ComboBoxText only renderer 
renderer.WidthChars = 20; //Always show at least 20 chars 
renderer.Ellipsize = Pango.EllipsizeMode.End; 

注:私はそれが利用可能かどうスペースを使用するように展開して使用しています。コンボボックスを固定幅に保ちたい場合は、そのビットを削除してください。

関連する問題