2016-06-03 4 views
1

나는 pyqt4python3.4에 넣었습니다. 셀의 텍스트가 소개 될 때 셀의 텍스트가 부동 소수점 숫자 인 경우 유효성을 검사하고 싶습니다. 나는 어떻게 그럴 수 있니?QTableWidget에서 셀의 유효성을 검사하는 방법은 무엇입니까?

+0

숫자 입력하도록 강제 할 수있는 검사기를 추가 : 입력이 숫자가 아닌 경우 http://pyqt.sourceforge.net/Docs/PyQt4/qdoublevalidator.html 것은,이 입력을 수락하지 않습니다 세포 안으로. – SNygard

답변

1

두 가지 옵션이 있습니다.

당신은 QItemDelegate를 작성하고 createEditor, setEditorDatasetModelData 그들이 데이터를 편집하는 제시하고있는 위젯을 제어하기 위해 재정의 할 수 있습니다. 원하는 경우 유효성 검사기를 사용하여 QLineEdit을 만들 수 있지만 숫자 만 입력 할 수있는 경우 정수 및 부동 소수점 만 허용하는 QSpinBox 또는 QDoubleSpinBox을 사용해야합니다. 양자 택일로, 당신은 그들이 무엇이든 원하는대로 입력하도록 할 수 있습니다. 그러면 setModelData 함수는 유효한 숫자가 아닌 입력 된 값을 무시합니다.

class MyDelegate(QtGui.QItemDelegate): 

    def createEditor(self, parent, option, index): 
     return QtGui.QSpinBox(parent) 


delegate = MyDelegate() 
table.setItemDelegate(delegate) 

또는 테이블의 항목이 이미 번호가있는 경우, 다만 정수를 할당하거나 항목에 대한 EditData 역할에 떠 약간 쉬운 솔루션입니다. Qt은 클래스 유형을 확인하고 QSpinBox 또는 QDoubleSpinBox을 자동으로 구성합니다.

item = QTableWidgetItem() 
item.setData(QtCore.Qt.EditRole, 5) 
+0

'QItemDelegate'를 사용해보세요 **하지만 ** float가 필요하고 부울 값만 허용합니다 –

+0

플로트로 작업하고 싶다면'QDoubleSpinBox'를 사용하십시오 –

+0

고마워요. QItemDelegate에 대한 문서를 어디에서 찾을 수 있습니까? 그것은 당신이 이해하지 못하는 코드 작성을 좋아하지 않습니다. –