GTK+2.0组合框-如何获得条目的位置
GTK+2.0 Combo Box - How to get the position of an entry?
#include <gtk/gtk.h>
//Defined a comboBox like this
combo = gtk_combo_box_new_text();
//Added entries like this
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "string");
//How to get a particular entry deleted from the list of entries in the ComboBox combo?
如何删除组合框中的特定条目?例如,ComboBox下拉列表中有"Foo"、"Boo"answers"Hoo"等条目。现在我想选择"Boo"然后删除它吗?我该怎么做?
//删除错误时出现分段故障
mcve-
fixed = gtk_fixed_new();
combo = gtk_combo_box_new_text();
gtk_fixed_put(GTK_FIXED(fixed), combo, 50, 50);
label = gtk_label_new("Rooms");
gtk_fixed_put(GTK_FIXED(fixed), label, 50, 30 );
gtk_table_attach_defaults (GTK_TABLE (table), fixed, 2, 3, 0, 2);
g_signal_connect(G_OBJECT(combo), "changed", G_CALLBACK(combo_selected), (gpointer) label);
在这个回调函数中,我只是将当前选择复制到一个全局声明的字符串中。接下来,在其他一些功能中,我尝试运行这个-
gtk_combo_box_remove_text (GTK_COMBO_BOX(combo), gtk_combo_box_get_active (GTK_COMBO_BOX(combo))); //statement where seg fault occurs
gtk_commo_box_get_active为我提供了要删除的适当索引条目。注意-GtkWidget*组合是在程序中全局定义的。
组合框中活动(当前所选)条目的id可以通过gtk_combo_box_get_active获得,也可以在gtk_como_box_text_remove或gtk/combo_box_remove_text的帮助下删除(取决于使用的api版本。前者(gtk_combo_box_text_remove)更为最新)。
如果没有活动项,则gtk_combo_box_get_active返回-1,因此在将其传递给某个remove函数之前应进行检查。如果像上面介绍的情况一样,移除发生在信号处理程序中,那么这一点尤为重要。根据文件,"已更改"的信号
[…]在活动项更改时发出。这可能是由于用户从列表中选择了不同的项目,也可能是由于调用了gtk_combo_box_set_active_iter()。它也将在输入带有条目的组合框的条目时发出。[…]
据我所知,这包括当项目被取消选择时(如果它被删除,可能会发生这种情况)。
因此,您的处理程序应该看起来像这样:
void combo_selected(GtkComboBox *widget, gpointer user_data)
{
int active_id=gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
if(active_id!=-1)
{
//do real work...
}
}
相关文章:
- 现代OpenGL:如何获得立方体的矢量位置
- 如何获得相同数量的第一个和第二个元素以及它们在c++中各自的位置
- 在小部件上获得绝对的鼠标点击位置(放大时也是如此)Qt
- C++ 友元函数在内存位置上有何不同?
- 如何在这两个分类的链接列表之间获得开关的位置
- 获得访问违规的阅读位置,但不确定为什么
- 是否可以从触摸板获得绝对触摸位置
- 如何在3D世界中获得对象相对于父母的绝对位置
- 如何始终获得QT鼠标位置
- 如何获得由drawnode函数制成的节点的位置
- 从方法中获得链接列表中的位置
- 如何获得C 中向量复合物值的最大,最小和位置
- 如何获得精灵的实际位置并将其打印在C 和SFML中
- GTK+2.0组合框-如何获得条目的位置
- 如何使用可可获得鼠标位置差异的变化
- Qml/Qt/C++:小部件中的QQuickView,无法获得正确的位置
- 我可以在OpenCV中使用重映射来获得点位置吗
- 提升:精神:因果报应:如何获得输出的当前位置
- C++opengl在glTranslatef之后获得新的顶点位置
- 如何在C++中获得距离给定位置一定距离内的对象列表