首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >data()::QModelIndex崩溃

data()::QModelIndex崩溃
EN

Stack Overflow用户
提问于 2015-12-05 12:22:40
回答 1查看 208关注 0票数 0

当我调用idx.data()时,下面的代码为什么会崩溃?

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-05 18:00:45

如果idx是同一个ApplicantTableModel实例的索引(应该是,否则用法不正确),idx.data()将调用idx.model()->data(),即完全相同的ApplicantTableModel::data()函数,这将导致堆栈溢出/崩溃。

从你的代码我猜你想要的是什么

代码语言:javascript
复制
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);
}

也就是说,调用从基类实现中获取数据的值,并在这种特殊情况下对其进行更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34104837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档