c - 替换从 GtkItemFactoryEntry 创建的 GtkItem 的回调

标签 c user-interface gtk callback

我正在编写一个修改现有 UI 的插件。我想做的一件事是更改现有菜单项的功能。

这都是使用Gtk库。

菜单项( GtkItem )是从 GtkItemFactoryEntry 创建的(这是我无法控制的),并且其当前行为由 the callback in the GtkItemFactoryEntry 定义。 。

我可以使用 gtk_item_factory_get_widget() 来处理菜单项 并使用 gtk_signal_connect() 将进一步的操作附加到菜单项,但我似乎无法使用 gtk_signal_disconnect() 断开原始回调或gtk_signal_disconnect_by_func() .

有什么办法可以删除或替换原来的回调吗?

最佳答案

所以我想出的办法是,因为信号处理程序是由一个向上的计数器标识的,并且我得到了一个我想用gtk_signal_connect()附加的回调的处理程序ID 对每个处理程序 ID 运行 gtk_signal_disconnect()(从零到比我的新处理程序 ID 小一)。

虽然很丑,但是很管用。而且由于该元素上没有悬挂其他信号,因此不会破坏任何东西。

关于c - 替换从 GtkItemFactoryEntry 创建的 GtkItem 的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2518584/

相关文章:

python - 如何更新 matplotlib hexbin 图?

c - GtkTextView 无法换行

python - 是否可以通过用 C 编写的内核模块来运行 Python 程序?

c - 尽管有足够的可用内存,但堆栈溢出

python - 以可重现的方式从相似的数字中创建不同的颜色

python - GUI设计问题

c++ - 为什么需要在结构中填充?

c - 重新分配一个结构,c

c++ - 在 MFC 的 CListCtrl 中禁用多个项目的按钮

c - GTK:获取窗口中鼠标单击的坐标