2012-01-17 91 views
4

我在Vala應用程序中有一個窗口,裏面有一個圖像。 此圖像有時會被img.set_from_pixbuf(imgdata);改變,所以它的尺寸也會改變。它嵌入在一個Gtk.Box中。當內容縮小時動態縮小GTK +中的窗口?

box = new Gtk.Box(Orientation.VERTICAL,5); 
... 
box.pack_end(img,false,false); 

所以,如果有前一個大的圖像,我和一個較小的更換,窗口依然大得離譜,我還沒有找到動態地將其縮小到所需的空間的方法。 我試過window.set_default_size(box.width_request,box.height_request),但總是返回-1。

那麼,如何調整窗口的任何想法? 謝謝!

回答

2

如果我沒有弄錯,窗口的自動調整大小隻發生在元素太大而無法繪製時。此外,set_default_size方法只在第一次繪製窗口時很重要,除非我錯了,否則不會再使用。我會建議使用resize方法來設置窗口大小。你需要(link

window.resize(box.width_request, box.height_request); 

一件事用調整時,要記住,如果你不能調整其大小比request_size小,如果你碰上這個問題用set_request_size方法。

+0

這裏有幾個拼寫錯誤:實際的方法名稱/簽名(它們應該在綁定中等價)是'get_size_request(out width,out height)'和'set_size_request(width,height)'。此外,'get_size_request'僅對其請求先前被明確設置的維有意義;否則他們是-1。如果沒有提出明確的請求,但用戶仍然希望小部件具有合適的大小,則應該使用'get_preferred_height/_width/_size'來代替。這將允許調整窗口的尺寸小於首選尺寸(如果它是可滾動的,則它是有用的) – 2016-11-11 00:06:01

0

不宜過深成這樣了,只是走一個刺 - 並美其名曰:

box.set_resize_mode(RESIZE_IMMEDIATE); 
box.check_resize(); 

做正確的事?

+0

不,這並沒有改變任何東西。不管怎麼說,還是要謝謝你。 – muxamilian 2012-01-18 23:55:40

相關問題