我正在研究一个项目,以从树莓派上的特定(USB)驱动器中选择特定文件。这些列表必须通过gpio硬件(编码器,按钮)进行导航。我有两个列表框。 1个包含驱动器,另一个包含所选驱动器上的文件。我似乎唯一的问题是一旦选择了驱动器,便从驱动器列表切换到文件列表。
对于我在参考指南中发现的内容,我怀疑这是可行的:
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
什么也没被选择。
答案 0 :(得分:0)
您只向我们显示了一行代码,所以我只是在这里猜测...
假设drive_selected()
是“行选择”信号的回调,则您的函数签名错误。应该是:
void drive_selected (GtkListBox *box, GtkListBoxRow *row, gpointer user_data)
当前,您正在尝试将第二个参数(ListBoxRow)用作ListBox。