我创建了一个非常简单的例子QListView
与定制QAbstractListModel
. The QListView
显示但它是空的。
我究竟做错了什么?
Code:
#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();
}
Thanks!
对先前代码的修复是将模型的父级设置为QListView
:
DataModel d(lv);
但这提出了一个问题,如果模型必须引用视图,那么模型/视图独立性在哪里?
如果我想在两个不同的视图中使用这个模型怎么办?
仅当 role = Qt::DisplayRole 时,您的方法数据才应返回“a”。否则,它会为每个角色返回“a”。
因此,添加一个简单的测试就可以了:
QVariant data( const QModelIndex & index, int role = Qt::DisplayRole ) const
{
if ( role == Qt::DisplayRole ) {
return "a";
}
return QVariant();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)