我在这里有点没有想法。我想要一件非常简单的事情:能够以GtkListBox
编程方式选择给定的行,然后滚动列表框(包含在 aScrolledWindow
和 a中Viewport
)。
选择一行是微不足道的(我的代码是 Go & gotk3,但这不是那么重要):
listBox.SelectRow(row)
但是滚动到该行被证明是一个真正的挑战。无论我尝试什么,我都失败了:
我试图集中这一行,但没有任何帮助
我试图用 来计算行的 Y 坐标gtk_widget_translate_coordinates()
,但它对任何行都返回 -1
也许我可以找出列表框顶部和底部的哪一行,并用它来滚动,ScrolledWindow
但我不知道该怎么做。
更新:我已经尝试过这里的建议:手动滚动到 Gtk.ScrolledWindow 中的孩子,但它没有工作,因为仍然没有滚动发生:
listbox.SelectRow(rowToSelect)
listbox.SetFocusVAdjustment(listbox.GetAdjustment())
if rowToSelect != nil {
rowToSelect.GrabFocus()
}
我也使用下面的代码对 's child 进行了同样的尝试rowToSelect,但无济于事:
if c, err := rowToSelect.GetChild(); err == nil {
c.GrabFocus()
}
胡子哥哥
神不在的星期二
相关分类