QListView和QListWidget的区别

QListView和QListWidget的区别文章来源 http blog csdn net leaf article details

文章来源:QListView和QListWidget_leaf的博客-CSDN博客_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,文字)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201427.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午9:25
下一篇 2026年3月20日 上午9:25


相关推荐

  • js子页面获取父页面元素_iframe跨域调用父页面方法

    js子页面获取父页面元素_iframe跨域调用父页面方法@{List<Customer>Custs=newList<Customer>();Custs.Add(newCustomer{CustomerCode=”1001″,CustomerName=”Shiv”});Custs.Add(newCustomer{Custome…

    2026年4月17日
    4
  • 多图详解缓冲区溢出问题

    多图详解缓冲区溢出问题蠕虫病毒是一种常见的利用Unix系统中的缺点来进行攻击的病毒。缓冲区溢出一个常见的后果是:黑客利用函数调用过程中程序的返回地址,将存放这块地址的指针精准指向计算机中存放攻击代码的位置,造成程序异常中止。为了防止发生严重的后果,计算机会采用栈随机化,利用金丝雀值检查破坏栈,限制代码可执行区域等方法来尽量避免被攻击。虽然,现代计算机已经可以“智能”查错了,但是我们还是要养成良好的编程习惯,尽量避免写出有漏洞的代码,以节省宝贵的时间!

    2022年7月12日
    42
  • iOS推送SDK集成对比

    iOS推送SDK集成对比

    2022年3月13日
    43
  • 国内服务器国内网站免备案教程

    国内服务器国内网站免备案教程关于免备案这个问题 我首先说明一下 我不是在提倡大家域名不要备案 这只是一项技术并不是用来给大家滥用的 希望大家能够明白 众所周知 要想使用国内服务器或者主机是是必须要通过工信局的 ICP 备案的 但是也有的伙伴怕麻烦或者通过不了 这里我教下大家这个使用 CDN 做到免备案 其实要做到绕过国内服务器域名备案的方法目前小编知道的有两种 一种是利用反向代理 一种就是利用 CDN 当然了 你有更多方法愿意分享出来的 可以在评论下方提出 今天 我们就着重讲利用 CDN 绕备案吧首先 我们要准备好工具 网站 服务器 域

    2026年3月26日
    2
  • PHP error_reporting() 错误控制函数功能详解

    PHP error_reporting() 错误控制函数功能详解

    2021年9月19日
    52
  • allure测试报告+Jenkins集成

    allure测试报告+Jenkins集成前提:得装了jdk1.8allure测试报告的样子是这样的,它能显示你运行了几次,然后每次运行有多少次成功多少次失败,之前的和现在的下载地址:链接:https://pan.baidu.com/s/1bG0a0DYxBoUpHtWM3M4n_g提取码:qtv8将文件减压,然后把bin文件目录下的allure.bat放到配置环境变量里然后cmd运行allure命令,显示这样算成功…

    2022年7月26日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号