QAbstractTableModel中的data()到底执行几遍???
有一个问题:QAbstractTableModel中的data()函数到底执行几遍???
?
?
?1、一个普通的继承QAbstractTableModel?的类
?
?
class CurrencyModel : public QAbstractTableModel { public: CurrencyModel(QObject *parent = 0); void setCurrencyMap(const QMap<QString, double> &map); int rowCount(const QModelIndex &parent) const; int columnCount(const QModelIndex &parent) const; QVariant data(const QModelIndex &index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; private: QString currencyAt(int offset) const; QMap<QString, double> currencyMap; }; ?
?
?2、其中的重载的data()函数如下:
?
//返回一个项的任意角色的值,这个项被指定为QModelIndexQVariant MoReconQueue::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) { return reconQueueAt(index.row(),index.column()); } //返回空值 return QVariant();}??
3、测试结果:
发现data()执行了3次遍历,每次遍历都执行每一行每一项的七个角色的赋值。
?
?
?
?