gpt4 book ai didi

c - Gtk+Glade : widgets using same signal handler. 如何区分它们?

转载 作者:行者123 更新时间:2023-12-03 19:34:37 25 4
gpt4 key购买 nike

现在我有一个窗口,其中包含许多执行类似行为的按钮,因此很自然地为它们使用相同的信号处理程序。但是,在信号发生后,我无法将它们彼此区分开来。是的,我有指向该对象的指针,但我不知道它是第一个按钮、第二个按钮还是其他东西。

我想可以用 gtk_widget_get_name 获得 glade 中的“名称”属性(我将其设置为“togglebutton1”)函数,但我错了,我得到的是“GtkToggleButton”。 xml 文件显示:<object class="GtkToggleButton" id="togglebutton1"> .

那么有没有办法利用“id”属性,或者有没有更好的解决方案来识别这些按钮?非常感谢。

最佳答案

你得到像“GTKToggleButton”这样的值的原因是因为你没有使用 gtk_widget_set_name 手动设置名称。根据 GTK 文档:

Widget names are the type of the widget by default (e.g. "GtkButton") or can be set to an application-specific value with gtk_widget_set_name().

因此,使用 gtk_widget_set_name 为您的按钮创建自定义名称,如果您需要更具体地区分对象,请使用 gtk_widget_path 获取对象的完整路径名.即,它将返回完整的窗口层次结构,允许您区分不同窗口中名称相似的按钮,或者允许您按父窗口名称等对按钮进行分组。

编辑:您还可以使用 gtk_buildable_get_name 从 XML UI 定义文件中获取小部件的实际 ID 值。因此,如果您想避免使用 gtk_widget_set_name,这是另一种选择。我假设您的 XML UI 定义与 GTKBuilder 兼容。

关于c - Gtk+Glade : widgets using same signal handler. 如何区分它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6250549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com