【问题标题】:GTK y-axis padded label doesn't vertically ALIGN_BOTTOM?GTK y 轴填充标签不垂直 ALIGN_BOTTOM?
【发布时间】:2012-03-09 05:47:24
【问题描述】:

我正在尝试对齐标签,以便顶部而不是底部有空间。我想要的是 label1 和 label2 之间的 30 左右,而不是 label2 和 label3 之间的 30。我将 label2 y padding 设置为 30,然后在 label2 y Gtk::ALIGN_BOTTOM 上设置,但它似乎不起作用。相反,我最终得到的是在屏幕截图中,label2 的顶部为 30,底部为 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;
}

谢谢

【问题讨论】:

  • @ptomato 在 Windows 上是 gtkmm 2.22

标签: c++ gtk gtkmm gtk2


【解决方案1】:

你需要这样的东西(未经测试):

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

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

【讨论】:

  • 感谢您的回复。测试,批准。所以代码没什么问题,就是不对齐就不行了?
  • @test,我想你也可以使用标签小部件的'valign'属性来设置它的对齐方式。
  • @spiritwalker 您可以使用 GTK 3 中的 margin-top 属性(而不是 valign),但这个问题专门针对 GTK 2.22。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多