GTK y轴填充标签不垂直ALIGN_BOTTOM?

时间:2012-03-09 05:47:24

标签: c++ gtk gtkmm gtk2

我正在尝试对齐标签,以便顶部有空间而不是底部。我想要的是label1和label2之间的30,但不是label2和label3之间的30。我将label2 y padding设置为30,然后将label2设置为Gtk :: ALIGN_BOTTOM,但它似乎不起作用。相反,我最终得到的是屏幕截图中的顶部30和label2底部的30。我知道有这方面的方法,但我想知道这个代码有什么问题?我无法弄清楚。我尝试更改包选项,但这不起作用。

以下是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;
}

由于

1 个答案:

答案 0 :(得分: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()在填充内没有对齐,只在分配给窗口小部件的剩余空间内。