Vala / GTK3设置小部件高度

时间:2016-01-24 01:41:34

标签: linux ubuntu gtk vala

我是Linux开发和Vala / Gtk的新手。在测试各种功能时,我尽可能多地学习。

这一次,我试图创建一些GUI应用程序,我坚持设置窗口小部件的高度。看看valadoc和gnome文档,我无法找到任何方法。

例如,如果我在水平方框上有两个按钮,我应该如何调整Box()高度?

这是我现在的代码:

var hBox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0);
    hBox.set_spacing(-10);
    hBox.set_homogeneous(true); // Same width of buttons

    // Set margins of maim menu icons
    hBox.set_margin_start(30);
    hBox.set_margin_end(30);
    hBox.set_margin_top(10);

// Top buttons (Main | Notifications)
var btnMain     = new Gtk.Button.with_label("Main");
var btnNotif    = new Gtk.Button.with_label("Notifications");

nixnMain.add(hBox);
hBox.pack_start(btnMain);
hBox.pack_start(btnNotif);

我现在尝试了几个选项,包括set_margin_bottom()get_request_mode() and size_allocate(),还有get_preffered_size()以及其他几个来自文档页面的选项。

另外,我如何指定小部件" class"例如,如果我的CSS像下面那样,我如何指定按钮以使类具有按钮主?

#buttonMain {
    background-color: black;
}

谢谢!

编辑:提供的图像
使用hBox.set_margin_bottom(Screen.height() + 50);我得到的结果如图所示,但我希望灰色按钮的高度更小 Image

2 个答案:

答案 0 :(得分:1)

您不应该直接设置小部件的高度。您永远不知道用户何时可能设置了不同的字体大小(例如,对于可访问的技术),并且您的身高将会变得错误。相反,请使用hexpand / halign / vexpand / valign / margin-top / margin-bottom / margin-right / {{1} }属性,或窗口小部件的容器margin-left或间距属性,或使用CSS中的填充属性。

答案 1 :(得分:0)

必须为添加到Gtk.Box

的窗口小部件设置对齐方式

我的例子:

using Gtk;

void main (string [] argv) {
    Gtk.init (ref argv);

    var window = new Window ();
    window.border_width = 18;
    window.destroy.connect (Gtk.main_quit);

    var hBox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 12);

    // Top buttons (Main | Notifications)
    var btnMain     = new Gtk.Button.with_label("Main");
    btnMain.set_valign (Gtk.Align.START);
    var btnNotif    = new Gtk.Button.with_label("Notifications");
    btnNotif.set_valign (Gtk.Align.START);

    window.add(hBox);
    hBox.pack_start(btnMain, false, false, 0);
    hBox.pack_start(btnNotif, false, false, 0);

    window.show_all ();
    Gtk.main ();
}
相关问题