4

我是 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();
}   

那么,有没有办法限制小部件的最小/最大尺寸,并将其调整为真。

4

1 回答 1

2

不确定这是否是您想要的,但查看您的代码,set_size_request 正在 GtkPaned 内的 GtkNotebook 上被调用,因此:

GtkPaned孩子有两个属性,resizeshrink

每个孩子都有两个可以设置的选项,调整大小和缩小。如果 resize 为真,则当 GtkPaned 被调整大小时,该子项将与 paned 小部件一起扩大或缩小。如果 shrink 为真,则该子项可以设置为小于用户的请求。将收缩设置为 FALSE 允许应用程序设置最小大小。如果 resize 对两个孩子都是 false,那么这被视为 resize 对于两个孩子都是 true

如果shrink设置为,TRUE则笔记本可以小于您请求的 400x300 尺寸。

要设置这些属性,请使用 GtkPannedpack1pack2方法而不是add1and add2

于 2017-07-09T12:05:26.450 回答