Gtk::ScrolledWindow 禁用滚动到焦点子项

问题描述 投票:0回答:2

我的

Gtk::EventBox
里有一个非常大的
Gtk::ScrolledWindow

当我在我的
grab_focus()
Gtk::EventBox
时,
Gtk::ScrolledWindow
滚动到
Gtk::EventBox
的顶部。

如何禁用此行为?

gtk gtkmm
2个回答
3
投票

Gtk::EventBox
不继承
Gtk::Scrollable

因此被
Gtk::Viewport

包裹着 当它被添加到
Gtk::ScrolledWindow
时。

要禁用滚动到焦点子项,您需要更改

focus_hadjustment
/
focus_vadjustment

//Disable scroll to focused child
auto viewport = dynamic_cast<Gtk::Viewport*>(m_scrolled.get_child());
if (viewport) {
  auto dummy_adj = Gtk::Adjustment::create(0,0,0);
  viewport->set_focus_hadjustment(dummy_adj);
  viewport->set_focus_vadjustment(dummy_adj);
}

0
投票

2024 年在 GTK4 上,如 @KoKuTory 提到的那样捕获视口是一个很好的领先优势,但现在有一个

scroll_to_focus

它对我来说解决了与OP完全相同的问题。

© www.soinside.com 2019 - 2024. All rights reserved.