2009-02-25 2 views
1

Ruby에서 직접 사용하고보기에 Qt를 사용하는 작은 파일 브라우저를 만들고 있습니다. 아이디어는 내 TV에서 끝나고 리모컨을 사용하여 파일을 위아래로 움직이고 실행할 수 있다는 것입니다.프로그래밍 방식으로 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) 

또는

을 아래로 이동 하나를 추가 :

위로 이동

0

나는 당신이 모델을 통해 ModelIndex을 만들 필요가 잊고 있다고 생각 : (. 난 정말 모르겠어요하지만, 이것은 다른 셀을 선택 해제) 나는이 방법을 시도 것

@dm.index(3, 0, None) 

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

저는 Ruby를 오래 사용하지 않았기 때문에 None이 확실하지 않습니다.

관련 문제