如何选择第二个列表框
How to select second listbox
我正在做一个项目,从树莓派上的特定 (USB) 驱动器中选择特定文件。这些列表必须由 gpio 硬件(编码器、按钮)导航。我有两个列表框。一个包含驱动器,另一个包含所选驱动器上的文件。我似乎遇到的唯一问题是选择驱动器后从驱动器列表切换到文件列表。
对于我在参考指南中找到的内容,我怀疑这是有效的:
static void drive_selected(GtkWidget* widget, gpointer data){
gtk_list_box_select_row(GTK_LIST_BOX(data), gtk_list_box_get_row_at_index(GTK_LIST_BOX(data), 1));
}
但我总是得到这个结果:
(a.out:24969): GLib-GObject-WARNING **: invalid cast from 'GtkListBoxRow' to 'GtkListBox'
(a.out:24969): GLib-GObject-WARNING **: invalid cast from 'GtkListBoxRow' to 'GtkListBox'
(a.out:24969): Gtk-CRITICAL **: gtk_list_box_get_row_at_index: assertion 'GTK_IS_LIST_BOX (box)' failed
(a.out:24969): Gtk-CRITICAL **: gtk_list_box_select_row: assertion 'GTK_IS_LIST_BOX (box)' failed
什么都没有被选中。
你向我们展示了一行代码,所以我只是在这里猜测......
假设drive_selected()
是"行选择"信号的回调,则函数签名是错误的。它应该是:
void drive_selected (GtkListBox *box, GtkListBoxRow *row, gpointer user_data)
当前,您正在尝试使用第二个参数 (ListBoxRow) 作为列表框。
相关文章:
- 我有两个类需要在同一 cpp 文件中相互引用,但第一个类无法识别第二个类类型的对象
- 等待整个 omp 块完成,然后再调用第二个函数
- 我想在C++中读取一些多个字符,但它永远不会读取第二个字符
- 如何在创建自定义迭代器时获得 std::p air 的第一个和第二个?
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- 将第二个 GATT 服务添加到 Movesense 容器
- 如何在 c++ 中根据第二个元素按降序对列表进行排序
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- 比较 2 个向量并从第二个向量中删除在第一个 - c++ 中找不到的元素
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- 使第二个类的构造函数成为第一个类中的友元函数
- 复制列表并返回指向第二个列表的指针
- 如何获取列表中的倒数第二个元素
- 如何迭代双重链接列表的每个第二个元素(戒指)
- 如何选择第二个列表框
- STL列表访问倒数第二个元素
- 变量数参数列表从其第二个条目开始
- 如何按第一个 STL 列表的顺序对第二个 STL 列表进行排序
- 无法转换初始值设定项列表的第二个参数