##// END OF EJS Templates
Adding metatype declarations in qml plugin for Qt5...
Adding metatype declarations in qml plugin for Qt5 Not sure why they are needed for Qt5. Definetly NOT needed for Qt4.

File last commit:

r2102:f689de612f59
r2257:b97c592cff78
Show More
customtablemodel.cpp
110 lines | 3.1 KiB | text/x-c | CppLexer
Marek Rosa
New simple model example
r889 /****************************************************************************
**
** Copyright (C) 2012 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
** This file is part of the Qt Commercial Charts Add-on.
**
** $QT_BEGIN_LICENSE$
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.digia.com
** $QT_END_LICENSE$
**
****************************************************************************/
#include "customtablemodel.h"
#include <QVector>
#include <QTime>
#include <QRect>
#include <QColor>
CustomTableModel::CustomTableModel(QObject *parent) :
QAbstractTableModel(parent)
{
Jani Honkonen
coding style fixes for examples
r2098 qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));
Marek Rosa
New simple model example
r889
m_columnCount = 4;
m_rowCount = 15;
// m_data
Jani Honkonen
coding style fixes for examples
r2098 for (int i = 0; i < m_rowCount; i++) {
Marek Rosa
New simple model example
r889 QVector<qreal>* dataVec = new QVector<qreal>(m_columnCount);
Jani Honkonen
coding style fixes for examples
r2098 for (int k = 0; k < dataVec->size(); k++) {
if (k % 2 == 0)
dataVec->replace(k, i * 50 + qrand() % 20);
Marek Rosa
New simple model example
r889 else
Jani Honkonen
coding style fixes for examples
r2098 dataVec->replace(k, qrand() % 100);
Marek Rosa
New simple model example
r889 }
m_data.append(dataVec);
}
}
Jani Honkonen
more coding style fixes for examples...
r2102 int CustomTableModel::rowCount(const QModelIndex &parent) const
Marek Rosa
New simple model example
r889 {
Q_UNUSED(parent)
return m_data.count();
}
Jani Honkonen
more coding style fixes for examples...
r2102 int CustomTableModel::columnCount(const QModelIndex &parent) const
Marek Rosa
New simple model example
r889 {
Q_UNUSED(parent)
return m_columnCount;
}
Jani Honkonen
coding style fixes for examples
r2098 QVariant CustomTableModel::headerData(int section, Qt::Orientation orientation, int role) const
Marek Rosa
New simple model example
r889 {
if (role != Qt::DisplayRole)
return QVariant();
Jani Honkonen
coding style fixes for examples
r2098 if (orientation == Qt::Horizontal) {
if (section % 2 == 0)
Marek Rosa
New simple model example
r889 return "x";
else
return "y";
Jani Honkonen
coding style fixes for examples
r2098 } else {
Marek Rosa
New simple model example
r889 return QString("%1").arg(section + 1);
Jani Honkonen
coding style fixes for examples
r2098 }
Marek Rosa
New simple model example
r889 }
Jani Honkonen
more coding style fixes for examples...
r2102 QVariant CustomTableModel::data(const QModelIndex &index, int role) const
Marek Rosa
New simple model example
r889 {
Jani Honkonen
coding style fixes for examples
r2098 if (role == Qt::DisplayRole) {
Marek Rosa
New simple model example
r889 return m_data[index.row()]->at(index.column());
Jani Honkonen
coding style fixes for examples
r2098 } else if (role == Qt::EditRole) {
Marek Rosa
New simple model example
r889 return m_data[index.row()]->at(index.column());
Jani Honkonen
coding style fixes for examples
r2098 } else if (role == Qt::BackgroundRole) {
foreach (QRect rect, m_mapping) {
if (rect.contains(index.column(), index.row()))
Marek Rosa
New simple model example
r889 return QColor(m_mapping.key(rect));
Jani Honkonen
coding style fixes for examples
r2098 }
Marek Rosa
New simple model example
r889 // cell not mapped return white color
return QColor(Qt::white);
}
return QVariant();
}
Jani Honkonen
more coding style fixes for examples...
r2102 bool CustomTableModel::setData(const QModelIndex &index, const QVariant &value, int role)
Marek Rosa
New simple model example
r889 {
Jani Honkonen
coding style fixes for examples
r2098 if (index.isValid() && role == Qt::EditRole) {
Marek Rosa
New simple model example
r889 m_data[index.row()]->replace(index.column(), value.toDouble());
emit dataChanged(index, index);
return true;
}
return false;
}
Jani Honkonen
more coding style fixes for examples...
r2102 Qt::ItemFlags CustomTableModel::flags(const QModelIndex &index) const
Marek Rosa
New simple model example
r889 {
return QAbstractItemModel::flags(index) | Qt::ItemIsEditable;
}
void CustomTableModel::addMapping(QString color, QRect area)
{
m_mapping.insertMulti(color, area);
}