1

私は vala から始めていますが、Gtk.ComboBox の幅を設定できません。Pythonでは、次のようにできます:

combo = Gtk.ComboBox.new_with_entry()
entry = combo.get_child()
entry.set_width_chars(12)

ヴァラでこれ:

var combo = new ComboBox.with_entry ();
var entry = combo.get_child();
entry.set_width_chars(12);

与えます:

error: The name `set_width_chars' does not exist in the context of `Gtk.Widget'

これは:

var combo = new ComboBox.with_entry ();
var entry = combo.get_child();
if (entry is Gtk.Entry)
    stdout.printf("Entry!\n")

"Entry!" と出力されるので、どこに問題があるのでしょうか?

4

2 に答える 2

3

(免責事項:valaへの露出は非常に限られていますが、これが役立つことを願っています)
問題はからの戻り値の型である可能get_child()性があります。それはGtk.Bin戻り値であり、有効ではGtk.Widgetない関数です。これは、 の子ウィジェットが任意のウィジェットになる可能性があるためです。静的型キャストを試してください:Gtk.Entryset_width_char()Gtk.Bin

var entry = (Entry)combo.get_child();

またはより複雑なバージョン

var entry = combo.get_child();
((Entry)entry).set_width_chars(12);

そして、成功した型チェックについてはGtk.Entry、あなたが持っているのは子が追加されたGtk.Widgetときの型ですが、エントリです。 Gtk.Entrycombobox

お役に立てれば!

于 2013-01-25T18:36:43.587 に答える
0

問題は、Vala が Python ではなく、set_width_chars() 関数がないことです。Vala には width_chars プロパティがあります。代わりにこれを試してください:

entry.width_chars = 12;

http://www.valadoc.org/#!wiki=gtk+-3.0/indexでドキュメントを確認してください。特に: http://www.valadoc.org/#!api=gtk+-3.0/Gtk.Entry.width_chars

編集: 実際には Entry.set_width_chars() があります。いずれにせよ、Vala には通常、このような目的で使用されるプロパティがあります。

于 2013-01-25T18:34:54.133 に答える