• QListView和QListWidget的区别


    QListView是基于Model,而QListWidget是基于Item。这是它们的本质区别。
    
    往QListView中添加条目需借助QAbstractListModel:
    
    如:
    
        MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
       {
        ui->setupUi(this);
        QStringListModel* slm = new QStringListModel(this);
        QStringList* sl = new QStringList();
        sl->append("asdfsadfsa");
        sl->append("asdfsadfsa");
        sl->append("asdfsadfsa");
        slm->setStringList(*sl);
        ui->listView->setModel(slm);
        delete sl;
    
      }
    
    而在QListWidget中添加条目可以直接additem
    
    如:
    
      QListWidget list;
      list.setViewMode(QListWidget::IconMode );
      list.setResizeMode(QListWidget::Adjust);
      list.setMovement(QListWidget::Static);
      for(int i =0; i < 100 ; i ++)
    { QListWidgetItem *item = new QListWidgetItem(&list); QStyle::StandardPixmap sp = (QStyle::StandardPixmap)(i % 57); item->setData(Qt::DecorationRole, qApp->style()->standardPixmap(sp).scaled(QSize(16,16), Qt::KeepAspectRatio, Qt::SmoothTransformation) ); item->setData(Qt::DisplayRole,QObject::tr("Item %1").arg(i)); } 我们可以通过信号和槽的方式对列表控件的选项进行响应,例如 connect(list, SIGNAL(currentTextChanged(QString)), this, SLOT(setText(QString)));
    总之,QListWidget是继承QListView,QListView是基于model的,需要自己来建模(例如建立QStringListModel、QSqlTableModel等),
    保存数据,这样就大大降低了数据冗余,提高了程序的效率,但是需要我们对数据建模有一定了解,初学者就先不要考虑了,
    而QListWidget是一个升级版本的QListView,它已经自己为我们建立了一个数据存储模型(QListWidgetItem),操作方便,直接调用addItem即可添加项目(ICON,文字)。
  • 相关阅读:
    Android实战:手把手实现“捧腹网”APP(一)-----捧腹网网页分析、数据获取
    容器云平台使用体验:数人云Crane(续)
    [React Native]升级React Native版本
    [React Native]去掉WebStorm中黄色警告
    数据库--mysql介绍
    缓存数据库-redis(补充)
    缓存数据库-redis(订阅发布)
    缓存数据库-redis(管道)
    缓存数据库-redis数据类型和操作(sorted set)
    缓存数据库-redis数据类型和操作(set)
  • 原文地址:https://www.cnblogs.com/leijiangtao/p/4155792.html
Copyright © 2020-2023  润新知