2014-04-09 2 views
1

나는 처음 QListView에서 항목을 선택하는 신호는 무엇입니까?

QObject.connect(self.image_list, QtCore.SIGNAL('clicked(QModelIndex)'), self.on_row_changed) 

를 사용하지만, 나는 오른쪽 버튼을 누르면, on_row_changed이 (초점이 아니라) 항목이 회색 인 경우에도 호출 될 것을 찾을 수 있습니다. 어떤 신호를 연결해야합니까?

설명서를 통해 qt4.8을 검색하면 activated (const QModelIndex &index), void indexesMoved (const QModelIndexList &indexes) 신호가 작동하지 않습니다.

포커스 항목을 기반으로 액션을 수행하려고 할 때 마우스 또는 위/아래 화살표를 사용하여 단일 선택 항목을 이동할 때 어떤 신호를 사용해야합니까? 콜백이 올바르게 호출됩니까?

+0

당신이 QModelIndex이 on_row_changed –

+1

대기에서 유효한지 여부를 확인할 수 있습니다, 이것은 무엇인가? C++ 또는 Python? – Shoe

+0

사실 그렇지만 화살표 키로 포커스를 변경하면 트리거되지 않습니다. –

답변

3

QListView의 경우 signals 중 하나 인 selection model에 연결해야합니다. 현재 항목뿐만 아니라 선택의 변경을 얻으려면, 수행

self.image_list.selectionModel().currentChanged.connect(self.on_row_changed) 
    ... 

    def on_row_changed(self, current, previous): 
     print('Row %d selected' % current.row()) 
+0

예. 작동합니다. 초점 항목을 변경하지 않으면 트리거되지 않습니다. 즉, '현재'는 항상 '이전'과 다르다는 것을 의미하며, 이는 내가 원하는 것입니다. –

+0

이상한, 첫 번째 라인은 나를 위해 파이썬을 충돌시킵니다. – 101

+0

밝혀졌습니다. 선택 모델, 즉'self.z = self.myListView.selectionModel()''self.z.currentChanged.connect (self.on_row_changed)'에 대한 참조를 유지해야합니다. – 101