2017-02-27 23 views
0

我正在使用一個Gtk EventBox,它包含一個圖像以接收圖像上的鼠標單擊事件。一旦圖像被點擊,EventBox被設置爲不敏感。但是,由於這會導致EventBox「變灰」,所以我的圖像顏色也變得很蒼白。我真的不喜歡這個。有什麼辦法可以禁用這種Gtk小部件的行爲嗎?如何防止Gtk小部件在設置不敏感時「變灰」?

代碼示例:

var ebox = new EventBox(); 
var img = new Image(); 
img.set_from_file ("my_image.png"); 
img.show(); 
ebox.add (img); 

ebox.button_press_event.connect (() => { ebox.set_sensitive (false); return true; }); 
+2

爲什麼不阻止或斷開事件處理程序而不是使小部件不敏感? –

+0

@Rawing這會讓它變得更加複雜,而且由於該方法存在,我認爲這是做到這一點的方法。 – Heiko

+0

好的,所以我決定去阻塞和解除阻塞信號處理程序。由於Vala Gtk代碼示例很難找到,下面大致是我使用的: 'handler_id = ebox.button_press_event.connect(()=> {callback_function(); return true;}); GLOB.SignalHandler.block(ebox,handler_id); GLib.SignalHandler.unblock(ebox,handler_id);' – Heiko

回答

0

,你可以繼承的小部件,添加一個虛擬方法do_draw(),並繪製你的形象出現。