我構建了一個複合窗口小部件,並希望它具有它自己的加速器(熱鍵),僅當它處於焦點時纔可用。到目前爲止,我唯一的想法是如何實現這一點,就是當我的小工具進入和離開焦點時,將頂級加速器組更改。似乎應該有更好的方法。每個窗口小部件加速器的Gtk
0
A
回答
0
這裏是類初始化函數這是我一直在尋找的解決方案
static void
webview_class_init (WebviewClass *klass)
{
GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass);
GtkBindingSet *binding_set;
signals[ZOOM_IN] = g_signal_new_class_handler("zoom_in",
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_CALLBACK (webview_zoom_in),
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 1,
G_TYPE_BOOLEAN, TRUE);
binding_set = gtk_binding_set_by_class (klass);
gtk_binding_entry_add_signal (binding_set, GDK_plus, GDK_CONTROL_MASK,
"zoom_in", 1,
G_TYPE_BOOLEAN, TRUE);
}
0
每個控件類都公開指向其處理程序的指針,作爲控件類結構的一部分。在調用gtk_init()
之後,在進入應用程序主循環之前,您可以在運行時修補它們。
因此,舉例來說,你可以修補的按鍵處理程序GtkFoo這樣的:
static gboolean (*oldFooKeyPress)(GtkWidget* _widget, GdkEventKey* _event);
...
GtkWidgetClass* fooClass = GTK_WIDGET_CLASS(g_type_class_ref(GTK_TYPE_FOO));
oldFooKeyPress = fooClass->key_press_event;
fooClass->key_press_event = myFooKeyPress;
然後,你可以寫myFooKeyPress()
這樣的:
static gboolean myFooKeyPress(GtkWidget* widget, GdkEventKey* event)
{
if (widget is one I am interested in &&
event is a special accelerator for that widget)
{
do something special here
and maybe return
}
return oldFooKeyPress(widget, event);
}
我記得,當你做上面的修補程序調用GTK_TYPE_FOO
將初始化Foo窗口小部件類,如果它尚未初始化。
0
看起來像我需要使用的鍵綁定,而不是加速器
http://library.gnome.org/devel/gtk/unstable/gtk-Bindings.html
的GtkTextView的交叉參考展示瞭如何 http://www.koders.com/c/fid959C3555A3004EA74AD6E0276122FC19673F9912.aspx?s=sort
相關問題
- 1. 不在Gtk窗口中的小部件
- 2. 重疊窗口小部件gtk
- 3. GTK - 全屏窗口小部件的窗口設置
- 4. 獲取Tkinter窗口的每個子窗口小部件
- 5. 在單個窗口中添加2個不同的小部件GTK +
- 6. 放入CDetailView窗口小部件另一個窗口小部件
- 7. GWT:將窗口小部件添加到新窗口瀏覽器
- 8. 如何添加複合窗口小部件:這個窗口小部件的父窗口沒有實現HasWidgets
- 9. 自定義GTK窗口小部件的外觀
- 10. 將GTK窗口小部件調整到C中的vbox中012
- 11. GTK:窗口小部件的無限延遲列表
- 12. 如何更改GTK窗口小部件(如堆棧)的屬性?
- 13. 窗口小部件
- 14. 增加窗口小部件的尺寸
- 15. Qt選項卡窗口小部件添加角組窗口小部件
- 16. GTK窗口小部件對話框不關閉
- 17. GTK#在點擊窗口小部件時刪除initialText
- 18. 從窗口訪問窗口小部件*
- 19. Python GTK窗口瀏覽器
- 20. 追加到窗口小部件樣式
- 21. 在窗口中添加小部件
- 22. gtk 3.4調整小部件和標籤附加到入口小部件
- 23. GTK + 3:如何渲染INSENSITIVE窗口小部件的風格爲NORMAL窗口部件
- 24. 在Gtk 3.0中基於窗口小部件大小縮放字體大小
- 25. 拾色器和窗口小部件
- 26. 如何從回調函數獲取另一個窗口的窗口小部件的指針 - GTK - C
- 27. 創建一個WordPress窗口小部件 - 如何僅當頁面上的窗口小部件加載腳本
- 28. 將多個gstreamer視頻窗口綁定到單個GTK窗口小部件(RTSP流式傳輸)
- 29. MVC窗口小部件
- 30. 如何防止窗口小部件展開爲整個框(GTK 2)