2

アプリをGtk2::GladeXMLの使用からGtk2::Builderに変換しています。ですべてのウィジェットを取得する場合

@widgets = $glade_object->get_widget_prefix('')

ウィジェットの名前(Gladeで設定)を取得できます

$widgets[0]->get_widget_name

Gtk2 :: Builderを使用して、すべてのウィジェットをフェッチします

@widgets = $builder_object->get_objects

しかし$widgets[0]->get_widget_name、知られていません。$widgets[0]->get_nameGtkImageなどのウィジェットクラスを取得するだけです。

だから私の質問は:Gtk2 :: Builderで作成されたウィジェットの名前(またはID)を取得するにはどうすればよいですか?

助けてくれてありがとう。

4

2 に答える 2

1

ありがとう@johannes-sasongko!これは本当に機能します。だから私が今していることは:

# save original package, e.g.: 'Gtk2::Image'
my $ref = ref $widgets[0]; 

# get the id
my $id = ( bless $widgets[0], "Gtk2::Buildable" )->get_name;  

# restore package
bless $widgets[0], $ref;                                         

これは一種のハックですが、機能します。より良い/よりクリーンなソリューションを歓迎します!

于 2011-02-23T20:01:47.287 に答える
0

$ widget-> Gtk2 :: Buildable :: get_name()は、ウィジェットの名前が必要な場合にトリックを実行する必要があります

于 2013-03-02T21:47:26.270 に答える