gtkmm Gtk ::布局负子位置未设置其绝对位置

时间:2016-06-11 10:52:26

标签: infinite-scroll gtkmm

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}")]

初始窗口显示滚动条,然后滚动到右下角以显示按钮

initial window showing scrollbars scrolled to bottom-right corner to show button

现在我需要为左上角做同样的事情,即将按钮放在滚动窗口的可见边界之外,然后使用滚动条到达按钮。我尝试将按钮放在(-10,-10),但与前一种情况不同,我不能通过调整大小来设置布局左上角的代码,因此无法移动布局的滚动条。当我通过左上角手动调整滚动窗口的大小时,按钮会向左上方移动而不是停留在那里。如何解决这种情况?

初始窗口,按键位于(-10,-10)且没有滚动条,尝试通过左上角手柄调整窗口大小但按钮随之移动

initial window with button at -10,-10 button moves with window when resizing it

简而言之,如何无限滚动左上角和右下角?

0 个答案:

没有答案