#include "tablemodel.h"
#include <QDebug>
TableModel::TableModel(QObject *parent) : QAbstractTableModel(parent)
{
headers << "open" << "high" << "low" << "close" << "total";
}
int TableModel::rowCount(const QModelIndex &parent) const
{
return map_stock.size();
}
int TableModel::columnCount(const QModelIndex &parent) const
{
return 4;
// return currencyMap.count();
}
//它有两个参数:第一个是QModelIndex,也就是单元格的位置;第二个是role,也就是这个数据的角色。
//在加载数据时,会自动的按照行列递增的方式向后进行索引填充数据。return的就是当前格子中所要写入的数据
QVariant TableModel::data(const QModelIndex &index, int role) const
{
// qDebug() <<"role:"<< role<< "index : " << index.row() << index.column();
if (!index.isValid())
return QVariant();
if (role == Qt::TextAlignmentRole)
{
return int(Qt::AlignRight | Qt::AlignVCenter);
}
else if (role == Qt::DisplayRole)
{
QString rowCurrency = currencyMapAt(index.row());//先找出行对应的list
QString columnCurrency = map_stock.find(rowCurrency).value().at(index.column());//再找出列对应的数值
return columnCurrency;//这个为当前索引下要加的数据
}
return QVariant();
}
QVariant TableModel::headerData(int section, Qt::Orientation orientation, int role) const//表头内容
{
if(role==Qt::DisplayRole && orientation==Qt::Horizontal)//列标题
{
return headers[section];
}
if(role==Qt::DisplayRole && orientation==Qt::Vertical)//行标题
{
return 0;
}
return QAbstractTableModel::headerData(section,orientation,role);
}
void TableModel::setCurrencyMapStock(const QMap<QString, QList<QString> > &map)
{
map_stock = map;
}
QString TableModel::currencyMapAt(int offset) const//map的偏移
{
return (map_stock.begin()+offset).key();
}
评论0
最新资源