1

Gtk2::SimpleList でブール値のトグル チェックボックスのトグルをキャプチャするにはどうすればよいですか?

チェックボックス自体がtoggledシグナルを発する Gtk2::CellRendererToggle であることは理解していますが、どのようにアクセスしてシグナル ハンドラを設定すればよいでしょうか?

SimpleList ウィジェットでデータ編集イベントをキャプチャするにはどうすればよいですか?

use Glib qw(TRUE FALSE);
use Gtk2 '-init';
use Gtk2::SimpleList;

my $slist = Gtk2::SimpleList->new(
    'Bool Field'    => 'bool',
    'Text Field'    => 'text'
);
$slist->set_column_editable(1, TRUE);

@{$slist->{data}} = (
    [ TRUE, 'text' ],
    [ FALSE, 'more text' ]
);

my $window = Gtk2::Window->new;
$window->set_border_width(8);
$window->signal_connect(destroy => sub { exit(0); });
$window->add($slist);
$window->show_all;

Gtk2->main;
4

1 に答える 1

0

SimpleList.pmに飛び込んだ後、私は以下のコードを思いついた。これはうまくいくようだ。しかし、それはあまり直感的ではありません。

# bool column
my $col = $slist->get_column(0);
my $r = $col->get_cell_renderers;
$r->signal_connect(toggled => sub {
    my ($widget, $value, $args) = @_;
    print "checkbox toggled to $value\n";
});

# text column
($slist->get_column(1))->get_cell_renderers->signal_connect(
    edited => sub {
        my ($widget, $text_path, $new_text, $args) = @_;
        print "new text is $new_text\n";
    }
);
于 2012-07-23T19:14:05.273 に答える