当我调用idx.data()时,下面的代码为什么会崩溃?
QVariant ApplicantTableModel::data(const QModelIndex &idx, int role) const
{
if (!idx.isValid()) return QVariant();
if (idx.column() == 10 && role == Qt::DisplayRole)
if(idx.data() == "0")
return "-";
else return "+";
else return QSqlTableModel::data(idx,role);
}发布于 2015-12-05 18:00:45
如果idx是同一个ApplicantTableModel实例的索引(应该是,否则用法不正确),idx.data()将调用idx.model()->data(),即完全相同的ApplicantTableModel::data()函数,这将导致堆栈溢出/崩溃。
从你的代码我猜你想要的是什么
QVariant ApplicantTableModel::data(const QModelIndex &idx, int role) const
{
if (!idx.isValid())
return QVariant();
if (idx.column() == 10 && role == Qt::DisplayRole) {
if(QSqlTableModel::data(idx,role).toString() == “0")
return "-";
else
return "+";
}
return QSqlTableModel::data(idx, role);
}也就是说,调用从基类实现中获取数据的值,并在这种特殊情况下对其进行更改。
https://stackoverflow.com/questions/34104837
复制相似问题