QTableView
에 확인란이있는 열이 있습니다. 하여 체크 박스가 생성된다 오버라이드 data()
함수 QTableView의 편집 가능한 확인란 전용 열
행위에 따라 role == Qt::CheckStateRole
하는 Qt::CheckState
를 반환 재정의 flags
멤버 함수 Qt::ItemIsUserCheckable
복귀
- , 화면 참조.
그러나 확인란 옆에 열에 편집 가능한 텍스트 상자가 있습니다. 내가 데모? 명확한 설명은 "dsdsdsds"를 입력이 텍스트 상자 (제거 할 수있는 방법, 체크 박스는 편집 있어야하고 아무것도.
로를 요청한 경우 단순화 된 버전 만 표시 할 수 있습니다.
Qt::ItemFlags MyClass::flags(const QModelIndex &index) const { Qt::ItemFlags f = QAbstractListModel::flags(index); ... return f if index is not target column .... // for target column with checkbox return (f | Qt::ItemIsEditable | Qt::ItemIsUserCheckable;) } QVariant MyClass::data(const QModelIndex &index, int role) const { .. do something for other columns .. for checkbox column if (role != Qt::CheckStateRole) { return QVariant(); } bool b = ... get value for checkbox column Qt::CheckState cs = b ? Qt::Checked : Qt::Unchecked; return QVariant(static_cast<int>(cs)); }
Qt::ItemIsEditable
다음 확인란도 읽기 전용입니다. 나는 후에 비슷한 접근법을 가지고 SO answer을 발견했다.
현재 코드를 표시 할 수 있습니까? 아니면 최소한의 완전한 예를 들어 주시겠습니까? – randomusername
위 코드를 –
@HorstWalter 위에 추가하면, Qt :: ItemIsEditable 플래그를 지우는 것은 어떨까요? –