• 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文件

    1. #ifndef MAINWINDOW_H
    2. #define MAINWINDOW_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. QT_BEGIN_NAMESPACE
    8. namespace Ui { class MainWindow; }
    9. QT_END_NAMESPACE
    10. class MainWindow : public QMainWindow
    11. {
    12. Q_OBJECT
    13. public:
    14. MainWindow(QWidget *parent = nullptr);
    15. ~MainWindow();
    16. private:
    17. Ui::MainWindow *ui;
    18. public:
    19. QStringListModel *Model;
    20. QStandardItemModel *ItemModel;
    21. void init();
    22. private slots:
    23. void showClick(QModelIndex index);
    24. };
    25. #endif // MAINWINDOW_H

    打开mainwindow.cpp文件

    1. #include "mainwindow.h"
    2. #include "ui_mainwindow.h"
    3. #include
    4. MainWindow::MainWindow(QWidget *parent)
    5. : QMainWindow(parent)
    6. , ui(new Ui::MainWindow)
    7. {
    8. ui->setupUi(this);
    9. init();
    10. }
    11. void MainWindow::init()
    12. {
    13. // QStringListModel的使用
    14. // QStringList strlist;
    15. // strlist<<"A"<<"B"<<"C"<<"D";
    16. // Model = new QStringListModel(strlist);
    17. // ui->listView->setModel(Model);
    18. // Model = new QStringListModel(this);
    19. // Model->setStringList(QStringList()<<"语文"<<"数学"<<"英语");
    20. // ui->listView->setModel(Model);
    21. ItemModel = new QStandardItemModel(this);
    22. QStringList strList; // 需要展示的数据
    23. strList.append("A");
    24. strList.append("B");
    25. strList.append("C");
    26. strList.append("D");
    27. strList.append("E");
    28. strList.append("F");
    29. strList.append("G");
    30. int nCount = strList.size();
    31. for(int i = 0; i < nCount; i++)
    32. {
    33. QString string = static_cast(strList.at(i));
    34. QStandardItem *item = new QStandardItem(string);
    35. ItemModel->appendRow(item);
    36. }
    37. ui->listView->setModel(ItemModel); // listview设置Model
    38. ui->listView->setFixedSize(200,300);
    39. // 绑定事件
    40. connect(ui->listView,SIGNAL(clicked(QModelIndex)),this,SLOT(showClick(QModelIndex)));
    41. }
    42. void MainWindow::showClick(QModelIndex index)
    43. {
    44. QString strTemp;
    45. strTemp = index.data().toString();
    46. QMessageBox msg;
    47. msg.setText(strTemp);
    48. msg.exec();
    49. }
    50. MainWindow::~MainWindow()
    51. {
    52. delete ui;
    53. }

     运行结果

    参考:

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

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

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

  • 相关阅读:
    MQ消息队列(五)——RabbitMQ进阶 MQ集群+集群的部署+集群的扩容
    降低Redis内存使用和提升性能的一些方案
    puzzle(102.1)不规则数独、变种数独
    Flutter 必备知识点
    分子相互作用的人工智能
    SpringBoot-内容协商
    【内网安全】——Linux信息收集
    服务器技术(二)--Linux进阶应用(3)--Bash Shell及Linux部署办公OA项目实践
    如何利用 RPA 实现自动化获客?
    【Mybatis源码】XMLConfigBuilder构建器 - 读取XML配置初始化Configuration对象
  • 原文地址:https://blog.csdn.net/sinat_31608641/article/details/126088067