Как выбрать второй список

Я работаю над проектом по выбору определенного файла с определенного (USB) диска на Raspberry Pi. Эти списки должны перемещаться с помощью оборудования 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

И ничего не выбирается.


person Laurens Mathues    schedule 27.12.2018    source источник


Ответы (1)


Вы показываете нам одну строку кода, так что я просто догадываюсь...

Предполагая, что drive_selected() является обратным вызовом для сигнала «выбранной строки», ваша подпись функции неверна. Так должно быть:

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

В настоящее время вы пытаетесь использовать второй аргумент (ListBoxRow) в качестве ListBox.

person Jussi Kukkonen    schedule 28.12.2018