2009-02-25 14 views
1

私はRubyで自分用の小さなファイルブラウザを作っています。私のテレビでは、リモコンを使って上下に移動してファイルを起動することができます。Qt(Ruby)のListViewを使ってプログラム的に移動

リモートを使用して選択項目を移動するまで、すべてうまく動作します。私は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」のようなものがあり、それを処理して正しくラップすることができます。しかし、私は何かを見つけることができません。

答えて

1

明らかにすべてのビューにItemSelectionModelを通してそれを固定するように管理しました。

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

または

を下に移動するために1を加える:

上に移動

0

私はあなたがあなたのモデルを通じてmodelIndexはを作成する必要があることを忘れていると思う:

@dm.index(3, 0, None) 

私はこの方法を試してみた(私は本当にわからないけど、これは他のセルの選択を解除し、。)

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

Rubyを使用していないため、Noneがあるとはっきりしません。

関連する問題