2017-02-27 25 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(),并绘制你的形象出现。