#include <QFileSystemModel>
TreeModel_left::TreeModel_left(QObject* parent) : TreeModel(parent) {}
//TreeModel inherits from QFileSystemModel
QVariant TreeModel_left::data(const QModelIndex& index, int role) const
{
if (index.column() == 0 && role == Qt::CheckStateRole) {
return checkstatus; //checkstatus is Qt::CheckState
}
return QFileSystemModel::data(index, role);
}
Qt::ItemFlags TreeModel_left::flags(const QModelIndex& index) const {
if (!index.isValid())
return Qt::NoItemFlags;
Qt::ItemFlags flags = QFileSystemModel::flags(index);
if (index.column() == 0) {
flags |= Qt::ItemIsUserCheckable;
}
return flags;
}
bool TreeModel_left::setData(const QModelIndex& index, const QVariant& value, int role) {
if (index.column() == 0 && role == Qt::CheckStateRole) {
Qt::CheckState state = static_cast<Qt::CheckState>(value.toInt());
checkstatus = state; //checkstatus is Qt::CheckState
}
return QFileSystemModel::setData(index, value, role);
}
I2luY2x1ZGUgPFFGaWxlU3lzdGVtTW9kZWw+CgpUcmVlTW9kZWxfbGVmdDo6VHJlZU1vZGVsX2xlZnQoUU9iamVjdCogcGFyZW50KSA6IFRyZWVNb2RlbChwYXJlbnQpIHt9Ci8vVHJlZU1vZGVsIGluaGVyaXRzIGZyb20gUUZpbGVTeXN0ZW1Nb2RlbAoKUVZhcmlhbnQgVHJlZU1vZGVsX2xlZnQ6OmRhdGEoY29uc3QgUU1vZGVsSW5kZXgmIGluZGV4LCBpbnQgcm9sZSkgY29uc3QKICAgIHsKICAgICAgICAgaWYgKGluZGV4LmNvbHVtbigpID09IDAgJiYgcm9sZSA9PSBRdDo6Q2hlY2tTdGF0ZVJvbGUpIHsKICAgICAgICAgICAgIHJldHVybiBjaGVja3N0YXR1czsgLy9jaGVja3N0YXR1cyBpcyBRdDo6Q2hlY2tTdGF0ZQogICAgICAgIH0KCiAgICAgIHJldHVybiBRRmlsZVN5c3RlbU1vZGVsOjpkYXRhKGluZGV4LCByb2xlKTsKICAgIH0KClF0OjpJdGVtRmxhZ3MgVHJlZU1vZGVsX2xlZnQ6OmZsYWdzKGNvbnN0IFFNb2RlbEluZGV4JiBpbmRleCkgY29uc3QgewogICAgaWYgKCFpbmRleC5pc1ZhbGlkKCkpCiAgICAgICAgICAgIHJldHVybiBRdDo6Tm9JdGVtRmxhZ3M7CgogICAgICAgIFF0OjpJdGVtRmxhZ3MgZmxhZ3MgPSBRRmlsZVN5c3RlbU1vZGVsOjpmbGFncyhpbmRleCk7CiAgICAgICAgaWYgKGluZGV4LmNvbHVtbigpID09IDApIHsKICAgICAgICAgICAgZmxhZ3MgfD0gUXQ6Okl0ZW1Jc1VzZXJDaGVja2FibGU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmxhZ3M7Cn0KCmJvb2wgVHJlZU1vZGVsX2xlZnQ6OnNldERhdGEoY29uc3QgUU1vZGVsSW5kZXgmIGluZGV4LCBjb25zdCBRVmFyaWFudCYgdmFsdWUsIGludCByb2xlKSB7CgogICAgICAgIGlmIChpbmRleC5jb2x1bW4oKSA9PSAwICYmIHJvbGUgPT0gUXQ6OkNoZWNrU3RhdGVSb2xlKSB7CiAgICAgICAgICAgIFF0OjpDaGVja1N0YXRlIHN0YXRlID0gc3RhdGljX2Nhc3Q8UXQ6OkNoZWNrU3RhdGU+KHZhbHVlLnRvSW50KCkpOwogICAgICAgICAgICBjaGVja3N0YXR1cyA9IHN0YXRlOyAvL2NoZWNrc3RhdHVzIGlzIFF0OjpDaGVja1N0YXRlCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gUUZpbGVTeXN0ZW1Nb2RlbDo6c2V0RGF0YShpbmRleCwgdmFsdWUsIHJvbGUpOwp9