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)

または1つ追加して下に移動

于 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 に答える