• 6795阅读
  • 1回复

qHash 的insert函数问题??? [复制链接]

上一主题 下一主题
离线hawkyz0919
 
只看楼主 倒序阅读 楼主  发表于: 2009-11-27
问题代码如下,问题请看注释


typedef struct
{
QVariant displayData;
QVariant innerData;
QVariant oldData; //!< 保存以前数据
bool isValid; //!< 暂时没处理
bool isDirty;
bool isNew;
bool isModified;
}RF_RTABLE_DATA_CELL ;

typedef struct
{
QHash<QPair<int,int>,RF_RTABLE_DATA_CELL> datalist;
QList<QStringList> catIdList;
QList<QString> orgList;
QList<QString> seqList;
QList<QString>msuList;
QHash<QString,int>rowHash;

}RF_RTABLE_DATA;



bool CRF_RTableModel::setData ( const QModelIndex & index, const QVariant & value, int role )
{
if(!index.isValid())
return false;
QPair<int,int> pos;
pos.first = index.row();
pos.second = index.column();
if (role != Qt::EditRole)
return false;


//! 存在pos的数据,修改数据,改变相关标志
RF_RTABLE_DATA_CELL dataItem = m_datalist->datalist.value(pos);
if(m_datalist->datalist.contains(pos))
{
if (dataItem.innerData != value)
{
dataItem.innerData =value;
dataItem.displayData =value;
// dataItem.oldData = dataItem.innerData;
dataItem.isValid =true;
dataItem.isDirty =true;
// 如果不是新加的,才设置置修改标志
if (!dataItem.isNew)
{
dataItem.isModified = true;
dataItem.isNew = false;
}
else
{
qDebug() <<" is new data";
}
m_datalist->datalist.insert(pos, dataItem);
}
}
else
{ //! 如果不存在此pos的数据,新建rtableTableData结构,并插入到m_datalist中去
dataItem.displayData = value;
dataItem.innerData =value;
dataItem.isDirty =true;
dataItem.isValid =true;
dataItem.isNew = true;
dataItem.isModified = false;
QMessageBox::information(0,"before insert","before insert"); //!< 此信息能弹出
m_datalist->datalist.insert(pos, dataItem); //!< 执行此句报错,程序访问非法地址退出为什么会退出????
QMessageBox::information(0,"after insert","after insert"); //!< 此信息框不能弹出,因为程序退出了
qDebug() << "此单元格以前没有数据";
}

return true;
}

下面非代码,为了突出问题显示!!
///////////////////////////
QMessageBox::information(0,"before insert","before insert"); //!< 此信息能弹出
m_datalist->datalist.insert(pos, dataItem); //!< 执行此句报错,程序访问非法地址退出为什么会退出????
QMessageBox::information(0,"after insert","after insert"); //!< 此信息框不能弹出,因为程序退出了
//////////////////////////////
离线foxyz

只看该作者 1楼 发表于: 2009-11-27
没看到你的m_datalist 怎么定义的,代码不全
快速回复
限100 字节
 
上一个 下一个