一、介绍

QListView可以用来以列表的形式展示数据,在Qt中使用model/View结构来管理数据与视图的关系,model负责数据的存取,数据的交互则通过delegate来实现。

二、model

QT提供了一些现成的models用于处理数据项:
QStringListModel                  用于存储简单的QString列表。
QStandardItemModel            管理复杂的树型结构数据项,每项都可以包含任意数据。
QDirModel                             提供本地文件系统中的文件与目录信息。
QSqlQueryModel                   对SQL的查询结果集进行封装
QSqlTableModel                    对SQL中的table进行封装。
QSortFilterProxyModel         对另一个model执行sort and/or filter
model中存放的每项数据都有相应的"model index",由QModelIndex类来表示。每个index由三个部分构成:row,column和表明所属model的指针。对于一维的list model,column部分永远为0。

三、实例

这里分别使用QStringListModel与QStandardItemModel 展示了ListView显示数据。

2.1 首先,使用qtcreator创建一个widget项目,各种设置一律采用默认。

2.2 打开项目中的界面文件,然后我们在界面中拖入一个listview控件。

2.3 然后,打开mainwindow.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QStringListModel>
#include <QStandardItemModel>
#include <QModelIndex>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;public:QStringListModel *Model;QStandardItemModel *ItemModel;void init();private slots:void showClick(QModelIndex index);};
#endif // MAINWINDOW_H

打开mainwindow.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);init();
}void MainWindow::init()
{
// QStringListModel的使用//    QStringList strlist;
//    strlist<<"A"<<"B"<<"C"<<"D";
//    Model = new QStringListModel(strlist);
//    ui->listView->setModel(Model);//    Model = new QStringListModel(this);
//    Model->setStringList(QStringList()<<"语文"<<"数学"<<"英语");
//    ui->listView->setModel(Model);ItemModel = new QStandardItemModel(this);QStringList strList; // 需要展示的数据strList.append("A");strList.append("B");strList.append("C");strList.append("D");strList.append("E");strList.append("F");strList.append("G");int nCount = strList.size();for(int i = 0; i < nCount; i++){QString string = static_cast<QString>(strList.at(i));QStandardItem *item = new QStandardItem(string);ItemModel->appendRow(item);}ui->listView->setModel(ItemModel); // listview设置Modelui->listView->setFixedSize(200,300);
// 绑定事件 connect(ui->listView,SIGNAL(clicked(QModelIndex)),this,SLOT(showClick(QModelIndex)));
}void MainWindow::showClick(QModelIndex index)
{QString strTemp;strTemp = index.data().toString();QMessageBox msg;msg.setText(strTemp);msg.exec();}MainWindow::~MainWindow()
{delete ui;
}

运行结果

参考:

QT--QlistView 简单应用_yifanmoon的博客-CSDN博客_qlistview

Qt5的ListView控件使用心得_tian_ciomp的博客-CSDN博客

Qt QListView详解_Mr.codeee的博客-CSDN博客_qlistview

QListView的使用相关推荐

  1. Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)

    目录 1.QTableView类 2.QListView类 3.QListWidet类 4.QTableWidget类 5.QTreeWidget和QTreeWidgetltem类 表格与树解决的问题 ...

  2. Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4)...

    Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4) 今天再次分析了Eva的源码,也看 ...

  3. qt中QListView的用法和QModelIndex的使用

    使用QTreeView,对于很多函数中针对item的唯一标识QModelIndex的使用,记录下两种对于QModelIdex的使用 1,树形结构的item设置为选中 QModelIndex rootI ...

  4. qlistview 自定义控件_是否可以在QListView中添加自定义窗口小部件?

    I have a large log data (100, 1000, 100000, ... records) and I want to visualize it in the following ...

  5. 拖拽之路(四):自定义QListView实现美观的拖拽样式(拖拽不影响选中)

    环境配置 :MinGW + QT 5.12 效果图(左边是QListView拖拽即选中样式,右边是拖拽不影响选中样式): 这种自定义拖拽样式的灵感来自于Chrome浏览器的书签栏.本文中拖拽的特点是: ...

  6. Qt之QListView使用

    记录下使用QListView遇到的各种问题 QListView可以用来以列表的形式展示数据,在Qt中使用model/View结构来管理数据与视图的关系,model负责数据的存取,数据的交互通过dele ...

  7. QT 如何去除QListView选中item后的虚线框

    在使用QListView或者QListWidget时,如果选中其item,会发现边框会出现虚线框,这并不美观!所以,我们需要去掉选中后的虚线框.在查阅各路大神的实现方式后,总结了有三种方法可以去除虚线 ...

  8. listview qt 选中内容_演练: 操作Qt应用中的QListView

    演练:操作Qt应用中的List 背景 需要针对Qt的ListView组件开发的列表应用进行操作和自动化测试.ListView通常用于含有大量可选项的窗口,比如文件列表.清单等等.以下我们对QListV ...

  9. PyQt(Python+Qt)学习随笔:QListView的itemAlignment属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QListView的itemAlignment属性用于控制每个数据项的对齐方式,其类型为枚举类Qt. ...

  10. Qt模型视图框架:QListView

    一.描述 QListView 将存储在模型中的项目呈现为简单的非分层列表或图标集合.此视图不显示水平或垂直标题. QStandardItemModel * model = new QStandardI ...

最新文章

  1. Katana-CookieAuthenticationMiddleware-源码浅析
  2. VMWare不能安装64位操作系统原因探析
  3. ftp之高级配置——虚拟用户
  4. 推动隐私计算技术,360数科提出分割式神经网络框架
  5. ComboBox控件值对类
  6. Java和C的关系及发展历程
  7. Java 开发流程、运行原理、JVM 规范与实现
  8. USB Repair(usb设备修复工具)官方正式版V8.0.3.1069 | u盘修复软件下载 | u盘修复软件哪个最好?
  9. 蓝墨云班课php答案,蓝墨云班课试题库答案
  10. A Byte Of Python中文版 PDF、Word文件下载
  11. 正确的座机号码格式_国际标准电话号码格式
  12. 联想电脑摄像头无法使用
  13. Oracle生成100万条测试数据的方法
  14. 头条号小程序制作分享
  15. 思科路由器配置NAT地址转换
  16. Leftover Hash Lemma(LHL):剩余哈希引理
  17. Phaser 3 入门实例教程
  18. NVM(NonVolatile Memory)(非易失性内存)
  19. 仿真通过AXI_lite接口读写寄存器时axi_awready信号无法拉高的一种原因
  20. 国内顶级经济类期刊有哪些?

热门文章

  1. STM32F107之CAN配置
  2. Liunx安装teamview15以及出现ID密码为空如何解决
  3. C语言数码管是共阴共阳程序,C语言实现共阴极数码管操作
  4. c语言编程绝对质数,c语言求绝对素数
  5. 【工具】(九):Mac工具整理
  6. 更新啦~人生重开模拟器自制
  7. 基于Opencv的几种立体匹配算法+ELAS
  8. 进度图绘制十大注意事项
  9. php 微信签到功能,微信小程序实现签到功能
  10. 资讯美国悬赏1000万美元追捕勒索黑客、能源行业成为网络钓鱼攻击“重灾区”|11月8日全球网络安全热点