2009-04-27 5 views
2

사용자를 선택할 수있는 목록 상자가 있습니다. 왼쪽에는 사용자가 입력 할 수있는 사용 가능한 그룹이 나열된 콤보 상자가 있습니다. 사용자가 그룹에 있으면 콤보 상자가 자동으로 해당 그룹으로 설정됩니다. 그룹 선택을 변경하면 사용자를 해당 그룹으로 이동시킵니다. 나는이 연결을 추가 :PyQT 콤보 상자는 사용자 상호 작용에만 반응합니다.

QtCore.QObject.connect(self.GroupsBox, QtCore.SIGNAL("currentIndexChanged(QString)"), self.HandleGrouping) 

문제는 내가 다른 그룹에서 다른 사용자를 선택 할 것이기 때문에, 때마다 나는 새로운 사용자, 콤보 변화의 기본 옵션을 선택하는 것이이며, Qt는 'A와이 등록 currentIndexChanged '신호를받습니다.

위젯 자체와의 직접적인 사용자 상호 작용에서만 신호를 발사하는 방법이없는 것처럼 보입니다. 이 문제를 해결하기 위해 어떤 방법을 사용할 수 있습니까?

답변

6

QComboBox (activated(int index))에서 신호를 수집하고이를 기반으로 선택된 사용자를 업데이트하십시오. 당신이 처리기 함수에서 콤보 상자의 선택된 색인이 선택한 사용자가 속한 그룹과 같은 경우 아무 작업도 수행하지 마십시오.

작업 순서에 따라 콤보 상자를 사용자 목록 상자 오른쪽으로 옮길 수 있습니다. 사용자 선택 -> 그룹 선택이됩니다.

+0

+1 동작의 순서 (및 activated() 신호도)로 인해 변경되었습니다. 디렉 티션이 일종의 우에서 좌로 UI를 프로그래밍하지 않는다면? 나는 다른 문화권이 그렇게하는지 궁금해. –

+0

@Chris Cameron, Qt는 자동으로 RTL 로켈의 레이아웃을 미러링합니다. 직접 테스트하려면 명령 줄의 "-reverse"스위치를 Qt 응용 프로그램에 전달하십시오. –

관련 문제