关于QAbstractItemModel::data () 函数的问题,请老鸟们帮忙看一下

weixin_38091030 2019-09-19 05:37:29
模型视图编程,视图是一个QTableVew实例,模型是自定义的继承自QAbstractTableModel类,但是编译时会出现错误—— 错误:passing 'const ObservedLine' as 'this' argument of 'QString ObservedLine::name()' discards qualifiers 代码如下: //mymodel.hclass ObLineListModle : public QAbstractTableModel{   Q_OBJECTpublic:    explicit ObLineListModle(QObject *parent = 0);    int rowCount(const QModelIndex &parent) const;   int columnCount(const QModelIndex &parent) const;   QVariant data(const QModelIndex &index, int role) const; private:    QList<ObservedLine> obLineList;     //自定义数据类}; //myModel.cppObLineListModle::ObLineListModle(QObject *parent) :    QAbstractTableModel(parent){} int ObLineListModle::rowCount(const QModelIndex &parent) const{    return obLineList.count();}void ObLineListModle::modelInit(QList<ObservedLine> list){    this->obLineList = list;   }int ObLineListModle::columnCount(const QModelIndex &parent) const{    return 1;}QVariant ObLineListModle::data(const QModelIndex &index, int role) const{    if(!index.isValid())        return QVariant();    if (role != Qt::DisplayRole)        return QVariant();    int row=index.row();    int column=index.column();   if(row>=obLineList.count())        return QVariant();    switch(column)    {            case 0:                return this->obLineList.at(row).name();  //错误就在这一行           default:                return QVariant();        }}//自定义数据类class ObservedLine{public:    ObservedLine();    QString name();   private:            QString _name;       //观测线名称};
...全文
184 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 Qt 官方文档提到支持的类型包括 QStringList、QVariantList、QObjectList 和 QAbstractItemModel。其中,QAbstractItemModel 用于提供复杂的数据模型。以下是一个关于如何将 QAbstractItemModel 与 QML 结合使用的示例说明: 创建 QAbstractItemModel 的子类 首先,需要定义一个继承自 QAbstractItemModel 的类。在这个类中,需要实现模型的基本接口函数,如 rowCount()、columnCount()、data() 和 index() 等。这些函数用于定义数据的结构和访问方式。例如,rowCount() 和 columnCount() 用于指定模型的行数和列数,data() 用于返回特定索引处的数据,index() 用于获取指定位置的索引对象。 在这个自定义模型类中,可以将数据存储在内部数据结构中,如列表、树形结构等,具体取决于数据的复杂性和需求。 在 C++ 中注册模型 在 C++ 代码中,创建自定义模型类的实例,并将其注册到 QML 环境中。这可以通过调用 QQmlContext::setContextProperty() 方法来实现,将模型对象设置为 QML 上下文的属性。这样,QML 文件就可以通过指定的属性名访问该模型。 例如,如果模型对象名为 myModel,则在 QML 中可以通过 myModel 来引用它。 在 QML 中使用模型 在 QML 文件中,可以通过 ListView、TableView 或其他视图组件来展示模型中的数据。通过将视图组件的 model 属性绑定到注册的 QAbstractItemModel 对象,视图组件会自动从模型中获取数

474

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧