如何选择第二个列表框

时间:2018-12-27 22:42:30

标签: c++ listbox gtk

我正在研究一个项目,以从树莓派上的特定(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

什么也没被选择。

1 个答案:

答案 0 :(得分:0)

您只向我们显示了一行代码,所以我只是在这里猜测...

假设drive_selected()是“行选择”信号的回调,则您的函数签名错误。应该是:

void drive_selected (GtkListBox *box, GtkListBoxRow *row, gpointer user_data)

当前,您正在尝试将第二个参数(ListBoxRow)用作ListBox。