2012-03-09 50 views
1

我正在尝试对齐标签,以便顶部有空间而不是底部。我想要的是标签1和标签2之间的约30,而不是标签2和标签3之间。我将label2 y padding设置为30,然后在label2上设置Gtk :: ALIGN_BOTTOM,但似乎不起作用。相反,我最终得到的结果是,屏幕截图中的顶部为30,底部为30。我知道有解决方法,但我想知道这个代码有什么问题?我无法弄清楚。我试着改变包选项,但没有奏效。GTK y轴填充标签不垂直ALIGN_BOTTOM?

这里是screenshot这里是示例代码:

int main(int argc, char *argv[]) 
{ 
    Gtk::Main kit(argc, argv); 

    Gtk::Window window; 
    window.set_default_size(400, 400); 

    Gtk::Label label1("This is the first label."); 
    Gtk::Label label2("This is the second label."); 
    Gtk::Label label3("This is the third label."); 

    label2.set_padding(0, 30); 
    label2.set_alignment(Gtk::ALIGN_RIGHT, Gtk::ALIGN_BOTTOM); 

    Gtk::VBox vbox; 
    vbox.pack_start(label1, false, false, 0); 
    vbox.pack_start(label2, false, false, 0); 
    vbox.pack_start(label3, false, false, 0); 

    window.add(vbox); 
    window.show_all_children(); 

    Gtk::Main::run(window); 

    return 0; 
} 

感谢

+0

这是GTKmm 2还是3? – ptomato 2012-03-09 10:29:57

+0

@ptomato它是gtkmm 2.22在窗口 – loop 2012-03-09 18:18:42

回答

2

你需要像这样(未经):

Gtk::Alignment alignment(0.0, 1.0, 0.0, 0.0); 
alignment.set_padding(30, 0, 0, 0); 
alignment.add(label2); 

的问题是,label.set_alignment()不在填充内对齐,只在分配给小部件的剩余空间内对齐。

+0

感谢您的答复。测试,批准。所以代码没有问题,如果没有对齐,我无法做到这一点。 – loop 2012-03-10 23:35:58

+0

这是正确的。 – ptomato 2012-03-11 16:03:01

+0

@test,我想你也可以使用标签小部件的'valign'属性来设置它的对齐方式。 – 2014-07-19 06:55:05