C++列表实现

文章目录

  • 一、listView
    • 相关内容
    • 主要思想
    • 实例
    • 全部代码
  • 二、QTreeView

一、listView

相关内容

QAbstractItemModel:一个抽象的类,为数据项模型提供抽象的接口,常见的的数据模型列如:QStringListModel,QStandardItemMode,QDirModel等都继承于此类;

QStringListModel:数据模型,储存一组字符串;

QList:列表类,以列表形态储存并管理其中的列表元素,并支持基于快速索引的数据存取,也可进行快速的数据删除操作;

QStringList:从QList继承而来,字符串列表类;

QListView:列表示图封装类,用来显示一维(一列)数据列表,二维数据列表可以用QTableView控件;
原文链接

主要思想

先把数据组织好保存到数字模型中,再将数据模型设置到列表视图控件中(树形控件也是如此)。

实例

以字符串列表操作为例:

  • 显示采用ListView控件;

  • 数据模型用QStringListModel;

我们首先要构造一个QStringListModel,这个数据模型最简单的方法就是采用现有的数据模型进行构造,我们进行如下操作;

要用到QStringListModel,需要包含头文件:

#include<QStringListModel>

在.h文件中添加我们需要的两个成员变量:

QStringListModel *model;
QStringList strlist;

在.cpp需要的位置添加:

model= new QStringListModel(this);
model->setStringList(strlist);
ui->listView->setModel(model);

全部代码

QtMainPage.cpp

#include "QtMainPage.h"
#include "ui_QtMainPage.h"#include<QStringListModel>  //数据模型,储存一组字符串
//调试输出
#include <QDebug>//防止中文乱码
#pragma execution_character_set("utf-8") QtMainPage::QtMainPage(QWidget *parent): QDialog(parent)
{ui.setupUi(this);//星号*是解引用运算符,用于获取指针指向的值//QListView *listView = new QListView(this);strlist << "第一行内容";strlist << "第二行内容";model = new QStringListModel(this);model->setStringList(strlist);ui.listView->setModel(model);
}QtMainPage::~QtMainPage()
{}

QtMainPage.h

#pragma once#include <QDialog>
#include "ui_QtMainPage.h"
#include<QStringListModel>  //数据模型,储存一组字符串class QtMainPage : public QDialog
{//Qt宏,用于在类中启用Qt的信号和槽机制Q_OBJECT//构造函数,
//接受一个指向QWidget的指针作为参数,
//该参数用于指定父窗口。如果未指定父窗口,则parent参数的默认值为nullptr
public:QtMainPage(QWidget *parent = nullptr);//析构函数。//当DlgLogin对象不再需要时,析构函数会被调用,以执行任何必要的清理操作~QtMainPage();//列表
private:QStringListModel *model;QStringList strlist;//存储和管理对话框窗口的界面元素
private:Ui::QtMainPageClass ui;
};

二、QTreeView

QTreeView实现了 model 中item的树形表示。这个类用于提供标准的层次列表
QTreeView类是model/view类之一,是Qt model/view框架的一部分。
QTreeView实现了由QAbstractItemView类定义的接口,以允许它显示由QAbstractItemModel类派生的模型提供的数据
QtMainPage.cpp

#include "QtMainPage.h"
#include "ui_QtMainPage.h"#include<QStringListModel>  //数据模型,储存一组字符串//treeview依赖
#include <QStandardItem>
#include <QStandardItemModel>
#include <QTreeView>//调试输出
#include <QDebug>//防止中文乱码
#pragma execution_character_set("utf-8") QtMainPage::QtMainPage(QWidget *parent): QDialog(parent)
{ui.setupUi(this);//星号*是解引用运算符,用于获取指针指向的值//QListView *listView = new QListView(this);//listview的strlist << "第一行内容";strlist << "第二行内容";model = new QStringListModel(this);model->setStringList(strlist);ui.listView->setModel(model);//treeview//视图QTreeView  *treeView = new QTreeView;//模型QStandardItemModel *standardItemModel = new QStandardItemModel;//设置列表标题standardItemModel->setHorizontalHeaderLabels({"序号","测试事件","电流1/mA","系统时间1", "电流2/mA","系统时间2", "电流3/mA" });//设置页面标题 如果是单独打开一个列表信息的时候可以在这里设置//treeView->setWindowTitle("电池测试数据");//设置顶层节点//第一行(索引为0)设置了一个内容为“第一层数据”的模型顶级项standardItemModel->setItem(0, new QStandardItem("第一层数据"));standardItemModel->setItem(1,0, new QStandardItem("第二层数据"));//设置第一行//以下为设置第一个顶层节点(索引为(0, 0 或 0))的子项//第一个顶层节点的第一个位置(子项索引为(0, 0)的位置创建了新的QStandardItem,内容为“1”//standardItemModel->item(0) 表示内容添加在哪一个顶层节点//setChild(0, 0, new QStandardItem("1"));//0, 0表示设置子项在几行几列( 0, 0表示设置内容在一行一列)//new QStandardItem("1")表示新建一个内容为1的item/*拆分写法QStandardItem* root1 = new QStandardItem("第一层数据");QStandardItem* sub11 = new QStandardItem("1");QStandardItem* sub12 = new QStandardItem("0");QStandardItem* sub13 = new QStandardItem("0");root1->setChild(0, 0, sub11);root1->setChild(0, 1, sub12);root1->setChild(0,2, sub13);model->setItem(0, root1);*/standardItemModel->item(0)->setChild(0, 0, new QStandardItem("1"));standardItemModel->item(0, 0)->setChild(0, 1, new QStandardItem("0"));standardItemModel->item(0, 0)->setChild(0, 2, new QStandardItem("0"));standardItemModel->item(0, 0)->setChild(0, 3, new QStandardItem("2024-04-25 10:36:20,780"));standardItemModel->item(0, 0)->setChild(0, 4, new QStandardItem("无"));standardItemModel->item(0, 0)->setChild(0, 5, new QStandardItem("答复"));standardItemModel->item(0, 0)->setChild(0, 6, new QStandardItem("无"));//设置第二行//第一个顶层节点的第二个位置(子项索引为(1, 0)的位置创建了新的QStandardItem,内容为“2”standardItemModel->item(0, 0)->setChild(1, 0, new QStandardItem("2"));standardItemModel->item(0, 0)->setChild(1, 1, new QStandardItem("0254"));standardItemModel->item(0, 0)->setChild(1, 2, new QStandardItem("543"));standardItemModel->item(0, 0)->setChild(1, 3, new QStandardItem("2024-04-25 10:36:20,740"));standardItemModel->item(0, 0)->setChild(1, 4, new QStandardItem("问题"));standardItemModel->item(0, 0)->setChild(1, 5, new QStandardItem("无"));standardItemModel->item(0, 0)->setChild(1, 6, new QStandardItem("无"));//设置第三行standardItemModel->item(0, 0)->setChild(2, 0, new QStandardItem("3"));standardItemModel->item(0, 0)->setChild(2, 1, new QStandardItem("0"));standardItemModel->item(0, 0)->setChild(2, 2, new QStandardItem("0"));standardItemModel->item(0, 0)->setChild(2, 3, new QStandardItem("2024-04-25 10:36:20,434"));standardItemModel->item(0, 0)->setChild(2, 4, new QStandardItem("无"));standardItemModel->item(0, 0)->setChild(2, 5, new QStandardItem("暂时"));standardItemModel->item(0, 0)->setChild(2, 6, new QStandardItem("无"));//以下为设置第二个顶层节点(索引为(1, 0 或 0))standardItemModel->item(1, 0)->setChild(0, 0, new QStandardItem("1"));standardItemModel->item(1, 0)->setChild(0, 1, new QStandardItem("0"));standardItemModel->item(1, 0)->setChild(0, 2, new QStandardItem("0"));standardItemModel->item(1, 0)->setChild(0, 3, new QStandardItem("2024-04-25 10:36:20,780"));standardItemModel->item(1, 0)->setChild(0, 4, new QStandardItem("无"));standardItemModel->item(1, 0)->setChild(0, 5, new QStandardItem("答复"));standardItemModel->item(1, 0)->setChild(0, 6, new QStandardItem("无"));//把模型设置到视图ui.treeView->setModel(standardItemModel);// 单独窗口显示视图//treeView->setModel(standardItemModel);//treeView->show();// 加到布局//ui.verticalLayout->addWidget(treeView);
}QtMainPage::~QtMainPage()
{}

效果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/703774.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

相约蓉城 | 全视通邀您参加 CHCC 2024第25届全国医院建设大会

第25届全国医院建设大会暨国际医院建设、装备及管理展览会&#xff08;CHCC2024&#xff09;&#xff0c;将于5月17日-19日在成都中国西部国际博览城盛大启幕。 全视通将携智慧病房、智慧门诊、智慧手术室、智慧后勤、智慧康养等产品方案亮相11号厅K05展位&#xff0c;期待与您…

【Win】如何在Windows隐藏安装的程序

由于维护人员或用户可能无意中通过“程序和功能”选项删除对业务至关重要的软件&#xff0c;这导致服务中断或安全风险。为了防止此类情况发生&#xff0c;确保只有授权的用户才能访问和管理系统中的程序。为了实现这一目标&#xff0c;我们将探讨如何在Windows操作系统中隐藏特…

AI预测体彩排3采取878定位大底=23策略+杀断组+杀组选+杀和尾+杀和值012缩水测试5月15日预测第1弹

昨天与一位玩排3的彩友通过视频直播的形式聊了下&#xff0c;受益匪浅&#xff0c;给我提供了一些比较有价值的建议&#xff0c;比如&#xff0c;对于878的定位策略&#xff0c;方向是没问题的&#xff0c;但是8783的话&#xff0c;还是缺乏一定的命中率&#xff0c;如果87823&…

掏心经验分享,软考中项0基础入门篇!

想备考下半年中项&#xff08;系统集成项目管理工程师&#xff09;的朋友&#xff0c;不知道如何了解软考中项&#xff0c;今天给大家整理一篇关于我自己在备考软考时的一些考量和踩过的一些坑。&#xff08;无广&#xff0c;放心看&#xff09; 很多小伙伴总是听大家说软考中…

C语言收尾 预处理相关知识

一. 预处理详解 1.1 预定义符号 FILE //进行编译的源文件LINE //文件当前的行号DATE //文件被编译的日期TIME //文件被编译的时间FUNCTION //文件当前所在的函数STDC //如果编译器遵循ANSI C标准&#xff0c;其值为1&#xff0c;否则未定义 这些预定义符号都是语言内置的 我们…

win11此电脑右键“属性“选项,无法打开怎么解决?

方法如下&#xff1a; 1. 按【 Win X 】组合键&#xff0c;或【 右键】点击任务栏上的【 Windows开始菜单】&#xff0c;在打开的隐藏菜单项中&#xff0c;选择【 终端管理员】&#xff1b; 2. 用户账户控制窗口&#xff0c;你要允许此应用对你的设备进行更改吗&#xff1f;点…

SC8908电机驱动芯片替代AN41908

SC8908 描述 五路H桥静音驱动电机驱动芯片&#xff0c;闭环直流电机光圈调节&#xff0c;支持霍尔位置检测&#xff0c; 2个步进电机。步进电机驱动带256微步细分。 主要特性 • 步进驱动H桥每路250mA最大驱动电流 • 光圈直流驱动H桥每路150mA最大驱动电流 • 单独…

AtomicInteger 详细解读

AtomicInteger 详细解读 一、原始数据并发写引发的问题 对于共享变量整数的加减操作&#xff0c;当出现并发的情况时&#xff0c;很容易造成线程不安全。 1、代码示例 public class Demo {static int num 0;public static void main(String[] args) throws InterruptedExc…

CSS 根据子元素选择父元素,并设置父元素的样式

场景举例&#xff1a;当子元素有增加了一个class时&#xff0c;需要影响其父元素的样式 可以使用":has"伪类来实现选择父元素的效果 <style>.parent:has(.child){background-color: #eee;}p{width:100px;border:1px solid #000;} </style> <body>…

webpack优化构建速度示例-externals:

externals 配置项主要用于防止将某些 import 的包&#xff08;package&#xff09;打包到 bundle 中&#xff0c;而是在运行时&#xff08;runtime&#xff09;再从外部获取这些扩展依赖&#xff08;external dependencies&#xff09;。这样做的主要目的是为了解决打包文件过大…

Linux上安装python指南

公司的linux服务器上只有自带的python2,折腾了一下安装python3,后来在网上搜发现装miniconda会更加方便。 1、 下载miniconda安装包 清华镜像下载&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/ 点这里下载 2、 上传Linux安装 #安装在/usr/local/mini…

非成对意象翻译中的内容制约范式再思考

Rethinking the Paradigm of Content Constraints in Unpaired Image-to-Image Translation 非成对意象翻译中的内容制约范式再思考 Xiuding Cai1 2, Yaoyao Zhu1 2, Dong Miao1 2, Linjie Fu1 2, Yu Yao1 2 蔡秀定 1 2 、朱瑶瑶 1 2 、苗东 1 2 、付林杰 1 2 、余瑶 1 2 Corre…