lwei24 |
2022-04-27 09:58 |
继承QAbstractTableModel后,重写自己的模型出现的问题
如题,在项目中,要在QTableView里的某一列插入某个图标,我写模型的代码如下:
- QVariant SmartModel::data(const QModelIndex &index, int role) const
{ if(!index.isValid()) return false;
if(index.row() >= rowCount() || index.row() < 0 || index.column() >= columnCount() || index.column() < 0) return false;
switch(role) { case Qt::DisplayRole: { if(index.column() == 0) //ID return QVariant(m_recordList[index.row()].strIdx);
if(index.column() == 2) //Description return QVariant(m_recordList[index.row()].strDescrition);
if(index.column() == 3) return QVariant(m_recordList[index.row()].strCurrentValue);
if(index.column() == 4) return QVariant(m_recordList[index.row()].strWorstValue);
if(index.column() == 5) return QVariant(m_recordList[index.row()].strThreshold);
if(index.column() == 6) return QVariant(m_recordList[index.row()].strRawValue); } case Qt::TextAlignmentRole: { return QVariant(Qt::AlignHCenter | Qt::AlignVCenter); } case Qt::DecorationRole: { if(index.column() == 1) //Status { #if 0 QString strStatus = m_recordList[index.row()].strStatus; if(strStatus.toInt() == 1) return QVariant(QIcon(":/image/GooderCircle16.png")); else if(strStatus.toInt() == 2) return QVariant(QIcon(":/image/NormalCircle16.png")); else if(strStatus.toInt() == 3) return QVariant(QIcon(":/image/DangerCircle16.png")); else return QVariant(QIcon("")); #else return QVariant(); #endif } } break; default: return QVariant(); } return QVariant(); }
问题:在插入图标的第一列,莫名其妙的出现一个数字132,我明明在模型里Qt::DecorationRole添加的是图标,但是它却显示图标加上132这个数字。为了弄清楚132这个数字是怎么插入第一列的,我把Qt::DecorationRole判断第一列的代码注释了,然后直接返回一个空的QVariant。结果,在第一列上还是会插入132.各位大佬,请问这是为啥呢?我明明没有赋值132或在模型里的第一列插入132,它会显示在我写的QTableView的第一列中。我定位分析了很久,没有找到问题出在哪里。请各位大佬帮忙看看,有什么办法可以解决这个问题吗?欢迎各位大佬指点,小弟感激不尽!!!
|
|