试了很多中方案,最终觉得还是使用css方案最好
设置选中整行setSelectionBehavior(QAbstractItemView::SelectRows);
1. 相关css
QTabelView::indicator:checked{
image: url(:/checked.png);
}
QTabelView::indicator::unchecked{
image: url(:/unchecked.png);
}
备注:前期踩坑,以为是配置QCheckBox的样式,一直没生效。
2. Model 设置
取数据:
if (role == Qt::CheckStateRole) {
return data[index.row()].bCk?Qt::Checked:Qt::Unchecked;
}
设置Flag
if (index.column() == 0) {
//第0列 显示CheckBox
return Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable;
}
else {
return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
}
3. Delegate
为了使用现有css ,所以Delegate