如何解决event.key.keyval 信号未连接
public class Epoch.CitiesChooser : Gtk.MenuButton {
private Epoch.CitiesSearch cities_search;
construct {
var button_grid = new Gtk.Grid ();
button_grid.column_spacing = 6;
var button_label = new Gtk.Label ("Dimapur");
button_grid.add (button_label);
button_grid.add (new Gtk.Image.from_icon_name ("pan-down-symbolic",Gtk.IconSize.MENU));
add (button_grid);
cities_search = new Epoch.CitiesSearch ();
cities_search.show_all ();
/* Use a event.eventkey.keypress here to add update the label of the menu_button using set_text */
if (cities_search.location_entry.visible) {
key_press_event.connect ((event) => {
stdout.printf ("keyval: 0x%X\n",event.key.keyval);
if (event.key.keyval == 0xFF57) {
button_label.set_text (cities_search.location_entry.get_text ());
cities_search.location_entry.hide ();
}
return false;
});
}
popover = new Gtk.Popover (this);
popover.width_request = 310;
popover.add (cities_search);
}
}
我想在键盘上按下“结束”键时更新 menu_button
的标签。
代码编译无误,但信号未连接,stdout.printf ("keyval: 0x%X\n",event.key.keyval);
不打印任何内容。
标签也没有更新。
解决方法
我从 vala Discord 服务器的一个了不起的人那里得到了这个答案
由于 Gtk.LocationEntry 是 Gtk.Entry 的子类,所以我们可以使用激活信号。
然后我用这个代码来更新标签
cities_search.location_entry.activate.connect ((obj) => {
button_label.set_text (cities_search.location_entry.get_text ());
if (this.get_active ()) {
this.set_active (false);
}
});
它实现了我的目的,但不是原始问题的答案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。