1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
// Copyright (C) 2018 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "imagemodel.h"
ImageModel::ImageModel(QObject *parent)
: QAbstractTableModel(parent)
{
}
QString ImageModel::source() const
{
return m_source;
}
//! [setsource]
void ImageModel::setSource(const QString &source)
{
if (m_source == source)
return;
beginResetModel();
m_source = source;
m_image.load(m_source);
endResetModel();
}
//! [setsource]
//! [rowcolcount]
int ImageModel::rowCount(const QModelIndex &parent) const
{
if (parent.isValid())
return 0;
return m_image.height();
}
int ImageModel::columnCount(const QModelIndex &parent) const
{
if (parent.isValid())
return 0;
return m_image.width();
}
//! [rowcolcount]
//! [data]
QVariant ImageModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid() || role != Qt::DisplayRole)
return QVariant();
return qGray(m_image.pixel(index.column(), index.row()));
}
//! [data]
QVariant ImageModel::headerData(int /* section */, Qt::Orientation /* orientation */,
int role) const
{
if (role == Qt::SizeHintRole)
return QSize(1, 1);
return QVariant();
}
|