我是 gtk 的新手,使用 gtkmm-3.0,我正在努力为 gtk 小部件设置最小宽度和高度。我使用了set_size_request方法,但是当我调整父容器的大小时,小部件仍然超过其最小/最大大小。
我的代码看起来像
foo::foo()
{
set_default_size(400,400); // set default size for window
add(grid_layout);
menu_bar.append(file);
menu_bar.append(edit);
menu_bar.append(project);
menu_bar.append(settings);
menu_bar.append(help);
right_panel_notebook.insert_page(right_btn, "Page1", Gtk::POS_RIGHT);
right_panel_notebook.insert_page(notebook_btn, "Page2", Gtk::POS_RIGHT);
right_panel_notebook.set_size_request(400,300); // setting size for a Notebook widget
design_paned.set_vexpand(true);
design_paned.add1(btn);
design_paned.add2(right_panel_notebook);
grid_layout.set_row_homogeneous(false);
grid_layout.set_column_homogeneous(true);
grid_layout.attach_next_to(menu_bar, Gtk::POS_RIGHT, 1,1);
grid_layout.attach_next_to(design_paned, Gtk::POS_BOTTOM, 1,1);
show_all();
}
那么,有没有办法限制小部件的最小/最大大小,将其大小调整为 true。
不确定这是否是你想要的,但查看你的代码,set_size_request是在 GtkPaned 内部的 GtkNotebook 上调用的,所以:
GtkPaned 子项有两个属性,resize
和shrink
:
每个孩子有两个选项可以设置,调整大小和缩小。如果 调整大小为真,然后当调整 GtkPaned 的大小时,该子项将 随平移微件一起展开或缩小。如果收缩为真,则 该子项可以小于用户对其申请的申请。 将收缩设置为 FALSE 允许应用程序设置最小大小。 如果两个子项的大小调整为假,则将其视为好像 调整大小对两个孩子都是正确的
如果shrink
设置为TRUE
则笔记本可以小于您请求的 400x300 大小。
若要设置这些属性,请使用 GtkPannedpack1
和pack2
方法,而不是add1
和add2
。