QListView的使用
一、介绍
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的使用相关推荐
- Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)
目录 1.QTableView类 2.QListView类 3.QListWidet类 4.QTableWidget类 5.QTreeWidget和QTreeWidgetltem类 表格与树解决的问题 ...
- Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4)...
Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4) 今天再次分析了Eva的源码,也看 ...
- qt中QListView的用法和QModelIndex的使用
使用QTreeView,对于很多函数中针对item的唯一标识QModelIndex的使用,记录下两种对于QModelIdex的使用 1,树形结构的item设置为选中 QModelIndex rootI ...
- qlistview 自定义控件_是否可以在QListView中添加自定义窗口小部件?
I have a large log data (100, 1000, 100000, ... records) and I want to visualize it in the following ...
- 拖拽之路(四):自定义QListView实现美观的拖拽样式(拖拽不影响选中)
环境配置 :MinGW + QT 5.12 效果图(左边是QListView拖拽即选中样式,右边是拖拽不影响选中样式): 这种自定义拖拽样式的灵感来自于Chrome浏览器的书签栏.本文中拖拽的特点是: ...
- Qt之QListView使用
记录下使用QListView遇到的各种问题 QListView可以用来以列表的形式展示数据,在Qt中使用model/View结构来管理数据与视图的关系,model负责数据的存取,数据的交互通过dele ...
- QT 如何去除QListView选中item后的虚线框
在使用QListView或者QListWidget时,如果选中其item,会发现边框会出现虚线框,这并不美观!所以,我们需要去掉选中后的虚线框.在查阅各路大神的实现方式后,总结了有三种方法可以去除虚线 ...
- listview qt 选中内容_演练: 操作Qt应用中的QListView
演练:操作Qt应用中的List 背景 需要针对Qt的ListView组件开发的列表应用进行操作和自动化测试.ListView通常用于含有大量可选项的窗口,比如文件列表.清单等等.以下我们对QListV ...
- PyQt(Python+Qt)学习随笔:QListView的itemAlignment属性
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QListView的itemAlignment属性用于控制每个数据项的对齐方式,其类型为枚举类Qt. ...
- Qt模型视图框架:QListView
一.描述 QListView 将存储在模型中的项目呈现为简单的非分层列表或图标集合.此视图不显示水平或垂直标题. QStandardItemModel * model = new QStandardI ...
最新文章
- Katana-CookieAuthenticationMiddleware-源码浅析
- VMWare不能安装64位操作系统原因探析
- ftp之高级配置——虚拟用户
- 推动隐私计算技术,360数科提出分割式神经网络框架
- ComboBox控件值对类
- Java和C的关系及发展历程
- Java 开发流程、运行原理、JVM 规范与实现
- USB Repair(usb设备修复工具)官方正式版V8.0.3.1069 | u盘修复软件下载 | u盘修复软件哪个最好?
- 蓝墨云班课php答案,蓝墨云班课试题库答案
- A Byte Of Python中文版 PDF、Word文件下载
- 正确的座机号码格式_国际标准电话号码格式
- 联想电脑摄像头无法使用
- Oracle生成100万条测试数据的方法
- 头条号小程序制作分享
- 思科路由器配置NAT地址转换
- Leftover Hash Lemma(LHL):剩余哈希引理
- Phaser 3 入门实例教程
- NVM(NonVolatile Memory)(非易失性内存)
- 仿真通过AXI_lite接口读写寄存器时axi_awready信号无法拉高的一种原因
- 国内顶级经济类期刊有哪些?