我是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();
}
那么,有没有办法限制小部件的最小/最大尺寸,其大小可以调整为真。
答案 0 :(得分:1)
不确定这是否是您想要的但是查看您的代码,在GtkNotebook中调用set_size_request,这是在GtkPaned中,所以:
GtkPaned个孩子有两个属性, resize
和 shrink
:
每个孩子都有两个可以设置,调整大小和缩小的选项。如果 resize是真的,然后当GtkPaned调整大小时,那个孩子会 与paned小部件一起展开或缩小。如果收缩是真的那么 该子项可以比用户的请求小。 将shrink设置为FALSE允许应用程序设置最小大小。 如果两个孩子的resize都为false,则将其视为 两个孩子的resize都是正确的
如果shrink
设置为TRUE
,那么笔记本电脑可以小于您要求的400x300尺寸。