listview 和 listwiget 有什么区别联系

	QListView 里没有自己的"模型"要自己建模来保存数据,这可以很大程度上降低数据冗余,提高程序的效率.但是要求我们对view/model框架比较了解,不适合新手使用.
QListWidget是QListView的子类,在QListWidget中已经帮我们定义好了一个模型.这个模型非常方便,十分全面.这样就可以直接在QListWidget里面添加数据,而不用在从新制定一个模型了.十分方便.

其实QListView和QListWidget的主要区别就是有木有自己的模型而已.
另外:
	在很多情况下,只需要把一小部分的项呈现给用户,这就没必要使用model这样重量级的组件。Qt为了方便起见也提供了一些方便的项视图类,分别是QListWidgetQTableWidgetQTreeWidget,使用这些类可以直接对item进行操作。这种实现很像Qt早期版本,组件中包含了相应的item,例如QTableWidget中包含有QTableWidgetItem等。但是对于很大的数据,我们则需要使用Qtview类,比如QListViewQTabelViewQTreeView,同时需要提供一个model,可以是自定义model,也可以是Qt预置的model。例如,如果数据来自数据库,那么你可以使用QTabelViewQSqlTableModel这两个类。
(1)
    listWidget = new QListWidget;
    listWidget->setIconSize(QSize(80, 60));
    QMapIterator<int, QString> i(symbolMap);
    while (i.hasNext()) {
        i.next();
           QListWidgetItem *item = new QListWidgetItem(i.value(),listWidget);
        item->setIcon(iconForSymbol(i.value()));
        item->setData(Qt::UserRole, i.key());//给Qt::UserRole这个角色添加值
    }
(2)
    QStringList leaders;
    leaders << "Stooge Viller" << "Littleface" << "B-B Eyes"

    model = new QStringListModel(this);//使用的是预定义QStringListModel模型,当然也自定义(不是这里的重点)
    model->setStringList(leaders);
    listView = new QListView;
    listView->setModel(model);
  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值