当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
Swift中什么时候不能用 () 代替 Void 来使用
OSI 七层模型和TCP/IP模型及对应协议(详解)
Pytorch 占用cpu资源过多
idea常用插件
Oracle 19c配置ob server
细学常用类,集合类,IO流
ansible模块--copy模块
The exchange - string dp
What is the future of smartwatches?
8大软件供应链攻击事件概述
数字化转型中的低代码
2022年8月初济南某外包公司全栈开发面试题整理
【项目管理技术的优势】
[kali-information collection] (1.9) Metasploit + search engine tool Shodan
go语言的接口
Crack detection technology based on deep learning
Coroutines and Lifecycle in Kotlin
Failure Analysis | A SELECT statement crashes MySQL, what happened?
翁恺C语言程序设计网课笔记合集
C#为listview选中的项添加右键菜单