Gtk::Layout
的说明
包含子窗口小部件和/或自定义绘图的无限可滚动区域
我在Gtk::ScrolledWindow
中添加Gtk::Layout
,将Gtk::Button
的大小设为400x400,然后将signal_size_allocate()
放在(450,450),但仅限滚动条直到滚动窗口调整为400x400,不(450 +按钮宽度x 450 +按钮高度)才出现。因此,我必须通过将处理程序连接到按钮的Gtk::Layout::set_size()
信号并手动调用class LayoutWindowTest : public ApplicationWindow {
ScrolledWindow sw;
Layout l;
Button b;
public:
LayoutWindowTest()
: l(), b("test") {
set_title("layout test");
set_size_request(400, 400);
sw.set_hadjustment(l.get_hadjustment());
sw.set_vadjustment(l.get_vadjustment());
l.set_size(400, 400);
sw.add(l);
add(sw);
// b.get_allocation() won't work because button has not been allocated a
// size yet
b.signal_size_allocate().connect(
[this](Allocation& btn_sz) {
l.set_size(btn_sz.get_x() + btn_sz.get_width(),
btn_sz.get_y() + btn_sz.get_height());
});
l.put(b, 450, 450);
show_all_children();
}
virtual ~LayoutWindowTest() {}
};
函数来调整布局的右下角,以将其调整为按钮的边界。现在滚动的窗口显示滚动条以到达按钮。一切都很好。
[Route("search/{*segments}")]
初始窗口显示滚动条,然后滚动到右下角以显示按钮
现在我需要为左上角做同样的事情,即将按钮放在滚动窗口的可见边界之外,然后使用滚动条到达按钮。我尝试将按钮放在(-10,-10),但与前一种情况不同,我不能通过调整大小来设置布局左上角的代码,因此无法移动布局的滚动条。当我通过左上角手动调整滚动窗口的大小时,按钮会向左上方移动而不是停留在那里。如何解决这种情况?
初始窗口,按键位于(-10,-10)且没有滚动条,尝试通过左上角手柄调整窗口大小但按钮随之移动
简而言之,如何无限滚动左上角和右下角?