【问题标题】:Gtk3 can't scroll ScrolledWindow far enoughGtk3 无法滚动足够远的 ScrolledWindow
【发布时间】:2021-06-03 21:34:49
【问题描述】:

如何让 Gtk ScrolledWindow 滚动超过一行的高度? (我的意思是在增加 ScrolledWindow 内容的高度后自动滚动。手动滚动可以正常工作。)

我的代码将 3 行写入 ScrolledWindow 内的 Viewport 内的 Gtk TextView,并指示 ScrolledWindow 滚动,但它只会向下滚动到足以显示 3 行中的第一行。

我的 ruby​​ 代码如下所示:

# Write 3 lines of text
textview.buffer.insert_at_cursor "%s\n"%s\n%s\n % [line1, line2, line3]
# Scroll
textview.scroll_to_iter textview.buffer.end_iter, 0.0, true, 0.5, 0.5 # Scroll to end of Gtk::TextView
vadjustment = textview.parent.parent.vadjustment # Get vadjustment from Gtk::ScrolledWindow
vadjustment.set_value vadjustment.upper

我尝试将任意大值插入到 vadjustment.set_value 函数调用中,并尝试使用 step_incrementpage_increment 进行各种数学运算,但我无法让它滚动超过一行的高度除非我手动滚动 ScrollView。我需要做什么?

【问题讨论】:

    标签: ruby gtk gtk3


    【解决方案1】:

    我通过将滚动操作移动到“更改”信号的回调中来实现滚动适当的量:

    buffer = textview.buffer
    
    # Configure scrolling
    buffer.signal_connect("changed") {
      mark = buffer.create_mark nil, buffer.start_iter.forward_to_end, false
      textview.scroll_mark_onscreen mark
    }
    
    # ...
    
    # Add text to the widget
    buffer.insert_markup @output.buffer.end_iter, "\n#{markup}", -1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2023-04-05
      相关资源
      最近更新 更多