QT를 처음 사용했습니다. qml tableview의 모든 행을 확인 가능하게 만들고 싶지만 작동하지 않습니다.QML qml tableview를 사용하여 QAbstractTableModel을 확인하는 방법
데이터가있는 테이블 뷰가 성공적으로 표시되지만 선택되지는 않습니다.
flags() 및 setData() 함수가 실행되지 않고 role == Qt :: CheckStateRole이 true가 아닌 것으로 보입니다.
도와주세요.
C++ 코드
내가 좋아하는 코드를 수정했지만 작동하지 않습니다 여기
QVariant TableModel::data(const QModelIndex & index, int role) const {
if (index.row() < 0 || index.row() >= _fields->size())
return QVariant();
if(role == Qt::CheckStateRole) {
return rowsChk.contains(index.row()) ? Qt::Checked : Qt::Unchecked;
}
switch(role) {
case NameRole:
return model.name();
case DescriptionRole:
return model.description();
case TypeRole:
return model.type();
}
return QVariant();
}
bool TableModel::setData(const QModelIndex & index, const QVariant & value, int role){
rowsChecked(index.row(), value) ;
emit dataChanged(index, index);
return true;
}
이 사항 setData() 메소드가 당신 때문에 호출되지 않습니다
TableView {
model: tableModel
anchors.fill: parent
frameVisible: true
headerVisible: true
sortIndicatorVisible: false
alternatingRowColors: true
Component {
id: checkBoxDelegate
Item {
CheckBox {
anchors.fill: parent
checked: styleData.value
}
}
}
TableViewColumn {
role: "check"
title: ""
width: 30
delegate: checkBoxDelegate
}
TableViewColumn {
role: "name"
title: "Name"
width: 200
}
TableViewColumn {
role: "description"
title: "Description"
width: 100
}
TableViewColumn {
role: "type"
title: "Type"
width: 100
}
"checked : styleData.value"를 사용했는데 클릭했을 때 확인란이 업데이트되지 않았습니다. –
체크 가능한 행과 같은 것은 없다고 생각합니다. 체크 가능한 행은 열만 가능합니다. 확인란이있는 세로 테이블 머리글을 정의하는 것보다 확인 가능한 행 동작이 필요한 경우 TableView 행 대리자를 정의하고 해당 onClicked (int 행) 신호가 출력 될 때이 확인란을 설정하십시오. 나는 더 구체적 일 수는 없다는 것을 유감스럽게 생각합니다. – vitakot
내 첫 번째 게시물을 참조하십시오. 제안한 코드를 수정했지만 여전히 작동하지 않습니다. –