首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有QAbstractListModel的QListView显示空列表

带有QAbstractListModel的QListView显示空列表
EN

Stack Overflow用户
提问于 2013-02-27 13:18:23
回答 1查看 5.5K关注 0票数 5

我已经创建了一个带有自定义QAbstractListModel的非常简单的QListView示例。QListView已显示,但为空。

我做错了什么?

代码:

代码语言:javascript
复制
#include <QListView>
#include <QAbstractListModel>
#include <QApplication>

class DataModel: public QAbstractListModel
{
public:
    DataModel() : QAbstractListModel() {}
    int rowCount( const QModelIndex & parent = QModelIndex() ) const { return 2; }
    QVariant data( const QModelIndex & index, int role = Qt::DisplayRole ) const
    {
        return "a";
    }
};

int main( int argc, char **argv)
{
    QApplication app(argc, argv, true);
    QListView *lv = new QListView();
    DataModel d;
    lv->setModel( &d ); 
    lv->show();
    app.setMainWidget(lv);
    app.exec();
}

谢谢!

对前面代码的修复是将模型的父级设置为QListView

代码语言:javascript
复制
DataModel d(lv);

但这提出了一个问题,如果模型必须引用视图,那么模型/视图的独立性在哪里?

如果我想在两个不同的视图中使用这个模型呢?

EN

回答 1

Stack Overflow用户

发布于 2013-02-27 17:05:36

只有当role = Qt::DisplayRole时,你的方法数据才应该返回"a“。否则,它为每个角色返回"a“。

所以,添加一个简单的测试,它就可以工作了:

代码语言:javascript
复制
  QVariant data( const QModelIndex & index, int role = Qt::DisplayRole ) const
{
    if ( role == Qt::DisplayRole ) {
      return "a";
    }
    return QVariant();
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15104711

复制
相关文章

相似问题

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