当前位置:网站首页>The use of QListView
The use of QListView
2022-08-02 11:46:00 【turn things around】
一、介绍
QListViewCan be used to display data in the form of a list,在Qt中使用model/View结构来管理数据与视图的关系,model负责数据的存取,The interaction of data is passeddelegate来实现.
二、model
QT提供了一些现成的models用于处理数据项:
QStringListModel 用于存储简单的QString列表.
QStandardItemModel 管理复杂的树型结构数据项,每项都可以包含任意数据.
QDirModel 提供本地文件系统中的文件与目录信息.
QSqlQueryModel 对SQL的查询结果集进行封装
QSqlTableModel 对SQL中的table进行封装.
QSortFilterProxyModel 对另一个model执行sort and/or filter
modelEach item of data stored in "model index",由QModelIndex类来表示.每个index由三个部分构成:row,columnand indicate belongingmodel的指针.对于一维的list model,columnpart is always0.
三、实例
这里分别使用QStringListModel与QStandardItemModel 展示了ListView显示数据.
2.1 首先,使用qtcreator创建一个widget项目,All settings are defaulted.
2.2 Open the interface file in the project,Then we drag and drop one into the interfacelistview控件.
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
边栏推荐
猜你喜欢
npm run serve启动报错npm ERR Missing script “serve“
看我如何用多线程,帮助运营小姐姐解决数据校对系统变慢!
Mysql transaction isolation level and MVCC (multi-version concurrency control)
雷克萨斯,锁死的安全,挡不住的心寒
When not to use () instead of Void in Swift
CAN总线的AUTOSAR网络管理
Shell编程之条件语句
【Acunetix-忘记密码】
喜迎八一 《社会企业开展应聘文职人员培训规范》团体标准出版发行会暨橄榄枝大课堂上线发布会在北京举行
OLED的HAL库代码介绍及使用(stm32f1/I2C/HAL库版/100%一次点亮)
随机推荐
[kali-information collection] (1.9) Metasploit + search engine tool Shodan
AQS-AbstractQueuedSynchronizer
项目监控六大事项
Shell编程案例
5G网络切片技术
暑期总结3
X86函数调用模型分析
【kali-信息收集】(1.9)Metasploit+搜索引擎工具Shodan
字母交换--字符串dp
CCF paper conference IEEE how to query all articles of a conference journal
ansible module --copy module
观察者(observer)模式(二) —— 实现线程安全的监听器
划分训练集,验证集,测试集
redis cluster cluster, the ultimate solution?
SQL 数据更新
阿苹的思考
数字化转型中的低代码
SQL 经典50题(题目+解答)(1)
SQL函数 TRIM
【kali-信息收集】(1.8)ARP侦查工具_Netdiscover