如何选择第二个列表框

How to select second listbox

本文关键字:第二个 列表 选择 何选择      更新时间:2023-10-16

我正在做一个项目,从树莓派上的特定 (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) 作为列表框。