1

我正在制作一个供我自己使用的小型文件浏览器,在 Ruby 中,并使用 Qt 作为视图。这个想法是它最终会出现在我的电视上,在那里我可以使用遥控器上下移动并启动文件。

一切正常,直到我要使用遥控器移动选择。我设法建立了一个 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

然后我不确定如何更改选择。我想我一定已经尝试过 DirModel、ItemSelectionModel 和 ListView 上的每个 setIndex、setSelection 和每个听起来相似的方法,但没有任何运气。我一直在谷歌搜索和阅读 API,但没有找到任何东西。

理想情况下,我会有类似“moveSelectionDown”和“moveSelectionUp”之类的东西来处理它,并确保它正确环绕。但我似乎找不到任何东西。

4

2 回答 2

1

设法通过每个视图显然具有的 ItemSelectionModel 修复它。

向上:

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

或添加一个向下移动

于 2009-02-28T11:02:25.560 回答
0

我认为您忘记了必须通过模型创建 ModelIndex :

@dm.index(3, 0, None)

我会尝试这种方法(虽然我不太确定,但这会取消选择其他单元格。)

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

我已经很久没有使用 Ruby 了,所以我不确定是否有None.

于 2009-02-25T21:46:28.627 回答