如题,在项目中,要在
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的第一列中。我定位分析了很久,没有找到问题出在哪里。请各位大佬帮忙看看,有什么办法可以解决这个问题吗?欢迎各位大佬指点,小弟感激不尽!!!