2016-01-24 25 views
1

我是Linux開發和Vala/Gtk的新手。我在儘可能多地學習各種功能的同時學習。Vala/GTK3組件高度

這一次,我試圖創建一些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()和其他幾個人。例如,如果我的CSS如下圖所示,我該如何指定小部件「class」?如何指定按鈕以獲得class buttonMain?

#buttonMain { 
    background-color: black; 
} 

謝謝!

編輯:圖片提供
使用hBox.set_margin_bottom(Screen.height() + 50);我得到的結果作爲圖像波紋管,但我想灰色按鈕的高度更小。
Image

+0

你能提供你想要什麼和你得到什麼的截圖嗎?添加一個類,這是通過小部件關聯的GtkStyleContext完成的。 – andlabs

+0

我已編輯帖子。請現在看看。 – sensation

回答

0

有必要設置對齊,而您添加到Gtk.Box

一個widget

我的例子:

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(); 
} 
+0

而不是僅僅傾銷一個例子,如果你能解釋哪些新增內容能夠達到OP所需的結果,以及它們的功能如何,那就更好了。這並沒有解釋'Align.START'的作用,它與默認的不同,以及'pack_start()'添加的參數是做什麼的。 –

1

你不應該直接設置一個小部件的高度。您永遠不知道用戶何時可能設置了不同的字體大小(例如,針對可訪問的技術),並且您的身高會變成錯誤的。相反,使用hexpand/halign/vexpand/valign/margin-top/margin-bottom/margin-right/margin-left屬性,或小部件的容器的border-width或間隔屬性,或在CSS使用填充性能。