【问题标题】:Programatically moving through a ListView in Qt (Ruby)以编程方式在 Qt (Ruby) 中移动 ListView
【发布时间】:2009-02-25 21:27:52
【问题描述】:

我正在用 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”之类的东西来处理它,并确保它正确环绕。但我似乎找不到任何东西。

【问题讨论】:

    标签: ruby qt listview qt4


    【解决方案1】:

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

    向上移动:

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

    或加一个向下移动

    【讨论】:

      【解决方案2】:

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

      @dm.index(3, 0, None)
      

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        • 2011-03-10
        • 2018-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多