如何解决Perl Gtk3 :: ScrolledWindow包含多个Gtk3 :: TreeView子级选择行时如何禁止子级滚动到顶部?
我正在使用Gtk3在Perl中编写程序。我的左侧边栏(不使用任何边栏小部件)包含多个树视图。
我这样设置:
my $sidebarscrollarea = Gtk3::ScrolledWindow->new( undef,undef );
my $sidebarlabelaccounts = Gtk3::Label->new("Accounts");
$sidebarlabelaccounts->set_halign('GTK_ALIGN_START');
my $sidebarlabelincome = Gtk3::Label->new("Income Envelopes");
$sidebarlabelincome->set_halign('GTK_ALIGN_START');
my $sidebarlabelexpense = Gtk3::Label->new("Expense Envelopes");
$sidebarlabelexpense->set_halign('GTK_ALIGN_START');
# *_create_model() builds the models
my $account_tstore = account_create_model();
my $income_tstore = envelope_create_model();
my $expense_tstore = envelope_create_model();
# populate the models with another subroutine
populate_models();
my $accountslist = Gtk3::TreeView->new();
$accountslist->set_model($account_tstore);
my $incomelist = Gtk3::TreeView->new();
$incomelist->set_model($income_tstore);
my $expenselist = Gtk3::TreeView->new();
$expenselist->set_model($expense_lstore);
# Add columns to model and view via view ( Gtk3::TreeView )
account_add_columns($accountslist);
envelope_add_columns($incomelist);
envelope_add_columns($expenselist);
my $sidebarbox = Gtk3::Box->new('vertical',1);
$sidebarbox->set_border_width(5);
$sidebarbox->pack_start($sidebarlabelaccounts,5);
$sidebarbox->pack_start($accountslist,6,5);
$sidebarbox->pack_start($sidebarlabelincome,5);
$sidebarbox->pack_start($incomelist,0);
$sidebarbox->pack_start($sidebarlabelexpense,5);
$sidebarbox->pack_start($expenselist,0);
$sidebarscrollarea->add($sidebarbox);
信封列表很长。当我单击该列表中靠近窗口底部的一行时,它会滚动,以便信封列表位于窗口顶部。我不希望它移动到任何位置,无论我单击行的位置如何。谢谢你的帮助。我是这一切的新手。
解决方法
只需添加:
$expenselist->set_can_focus(FALSE);
解决了我的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。