我是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
答案 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 ();
}