#include "ImageInfoModel.h" #include #include ImageInfoModel::ImageInfoModel(QObject* parent) : QAbstractListModel(parent) {} int ImageInfoModel::rowCount(const QModelIndex &parent) const { if (parent.isValid()) return 0; return m_items.size(); } QVariant ImageInfoModel::data(const QModelIndex &index, int role) const { if (!index.isValid() || index.row() < 0 || index.row() >= m_items.size()) return {}; const ImageInfo &info = m_items.at(index.row()); switch (role) { case Qt::DisplayRole: return info.name; case PathRole: return info.path; case SizeRole: return static_cast(info.sizeBytes); case DimensionsRole: return QVariant::fromValue(info.dimensions); default: return {}; } } QHash ImageInfoModel::roleNames() const { QHash roles; roles[Qt::DisplayRole] = "display"; roles[PathRole] = "path"; roles[SizeRole] = "size"; roles[DimensionsRole] = "dimensions"; return roles; } void ImageInfoModel::setFiles(const QStringList& filePaths) { beginResetModel(); m_items.clear(); m_items.reserve(filePaths.size()); for (const QString &p : filePaths) { QFileInfo fi(p); ImageInfo info; info.path = fi.absoluteFilePath(); info.name = fi.fileName(); info.sizeBytes = fi.size(); QImageReader reader(p); info.dimensions = reader.size(); m_items.push_back(info); } endResetModel(); }