GTK с добавленной меткой по оси Y не вертикально ALIGN_BOTTOM? - PullRequest
1 голос
/ 09 марта 2012

Я пытаюсь выровнять метку так, чтобы было место сверху, а не снизу.То, что я хочу, это около 30 между label1 и label2, но не между label2 и label3.Я установил для label2 y padding 30, а затем для label2 y Gtk :: ALIGN_BOTTOM, но, похоже, он не работает.Вместо этого я получаю то, что на скриншоте выглядит как 30 сверху и 30 снизу label2.Я знаю, что есть способы обойти это, но я хочу знать, что не так с этим кодом?Я не могу понять это.Я попытался изменить параметры упаковки, но это не сработало.

Вот скриншот , а вот пример кода:

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 Ответ

2 голосов
/ 10 марта 2012

Вам понадобится что-то вроде этого (не проверено):

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

Проблема в том, что label.set_alignment() не выравнивается внутри отступа, только в пределах оставшегося пространства, выделенного виджету.

...