나는 pyqt4
을 python3.4
에 넣었습니다. 셀의 텍스트가 소개 될 때 셀의 텍스트가 부동 소수점 숫자 인 경우 유효성을 검사하고 싶습니다. 나는 어떻게 그럴 수 있니?QTableWidget에서 셀의 유효성을 검사하는 방법은 무엇입니까?
답변
두 가지 옵션이 있습니다.
당신은 QItemDelegate
를 작성하고 createEditor
, setEditorData
및 setModelData
그들이 데이터를 편집하는 제시하고있는 위젯을 제어하기 위해 재정의 할 수 있습니다. 원하는 경우 유효성 검사기를 사용하여 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)
'QItemDelegate'를 사용해보세요 **하지만 ** float가 필요하고 부울 값만 허용합니다 –
플로트로 작업하고 싶다면'QDoubleSpinBox'를 사용하십시오 –
고마워요. QItemDelegate에 대한 문서를 어디에서 찾을 수 있습니까? 그것은 당신이 이해하지 못하는 코드 작성을 좋아하지 않습니다. –
숫자 입력하도록 강제 할 수있는 검사기를 추가 : 입력이 숫자가 아닌 경우 http://pyqt.sourceforge.net/Docs/PyQt4/qdoublevalidator.html 것은,이 입력을 수락하지 않습니다 세포 안으로. – SNygard