当前位置:网站首页>QListView的使用
QListView的使用
2022-08-02 11:38:00 【物随心转】
一、介绍
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_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
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设置Model
ui->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
边栏推荐
猜你喜欢
随机推荐
QT笔记——QT类反射机制简单学习
LeetCode每日一练 —— 20. 有效的括号
华为eNSP(基础实验通信)
喜迎八一 《社会企业开展应聘文职人员培训规范》团体标准出版发行会暨橄榄枝大课堂上线发布会在北京举行
ASP.NET Core 6框架揭秘实例演示[31]:路由&ldquo;高阶&rdquo;用法
The exchange - string dp
MySQL主从复制几个重要的启动选项
Hub and Spoke配置案例
微信小程序---组件开发与使用
SQL函数 $TRANSLATE
leetcode: 200. Number of islands
Nanny Level Tutorial: Write Your Own Mobile Apps and Mini Programs (Part 2)
QT笔记——Q_PROPERTY了解
Multithreading (Basic) - 40,000 word summary
sva assertion data
LeetCode每日一练 —— 225. 用队列实现栈
【Acunetix-Forgot your password】
yolo格式(txt)数据集转VOC(xml)
基于深度学习的裂缝检测技术
What is the future of smartwatches?