2009-02-25 3 views
1

Я создаю небольшой файловый браузер для собственного использования, в Ruby и используя Qt для представления. Идея заключается в том, что это закончится на моем телевизоре, где я могу использовать пульт для перемещения вверх и вниз и запускать файлы.Программный переход через ListView в Qt (Ruby)

Все работает нормально, пока я не перейду с помощью пульта. Мне удалось настроить службу D-Bus, поэтому я просто позвоню методам, используя LIRC.

кода я использую для создания представления выглядит следующим образом:

@dm = Qt::DirModel.new 
@sm = Qt::ItemSelectionModel.new(@dm) 

@lv = Qt::ListView.new 
@lv.model = @dm 
@lv.selectionModel = @sm 

cwd = @dm.index(@dir) 
@lv.rootIndex = cwd 

И я не уверен, как изменить выбор. Думаю, я, должно быть, пробовал каждый набор SetIndex, setSelection и каждый метод, похожий на DirModel, ItemSelectionModel и ListView, без везения. Я искал Google и читал API, не найдя ничего.

В идеале, у меня было бы что-то вроде «moveSelectionDown» и «moveSelectionUp», который позаботится об этом, и убедиться, что он обертывается правильно. Но я ничего не могу найти.

ответ

1

Удалось устранить его с помощью элемента ItemSelectionModel, который, по-видимому, имеет вид.

двигаться вверх:

curIndex = @lv.currentIndex 
@lv.selectionModel.setCurrentIndex(curIndex.sibling(curIndex.row-1, 0), Qt::ItemSelectionModel::ClearAndSelect) 

или добавление одного двигаться вниз

0

Я думаю, вы забываете, что вы должны создать ModelIndex через модель: (. Хотя я не совсем уверен, это отменяет другие клетки)

@dm.index(3, 0, None) 

Я бы попробовать этот метод

@lv.setCurrentIndex(@dm.index(3, 0, None)) 

Я не использовал рубин в течение веков, так что я не совсем уверен, что есть None.

Смежные вопросы