首页 > 编程语言 >带你0到1之QT编程:十二、视图宝典,点通views的任督二脉

带你0到1之QT编程:十二、视图宝典,点通views的任督二脉

时间:2024-09-15 21:23:44浏览次数:13  
标签:QT item1 视图 任督 setItem ui stuModel new QStandardItem

此为QT编程的第十二谈!关注我,带你快速学习QT编程的学习路线

每一篇的技术点都是很很重要!很重要!很重要!但不冗余!

我们通常采取总-分-总和生活化的讲解方式来阐述一个知识点!

码农不易,各位学者学到东西请点赞支持支持

开始部分:

总:view视图组:QListView、QTreeView、TableView、QListWidget、QTreeWidget、QTableWidget。

分:

一、QListView的简单应用

1.引入头文件

2.创建QListView对象

3.用QStringList来存放数据

4.用数据模型进行展示

5.连接槽函数

6.效果图如下:

二、QTreeView的简单应用

1.引入头文件

2.创建树视图函数,创建三级节点

void Widget::InitTreeViewFunc()
{
    //构造model展示数据
    sitemModel=new QStandardItemModel(ui->treeView);
    sitemModel->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("编号")<<QStringLiteral("初中部|高中部"));

    //创建一级节点,加入到sitemModel中
    QList<QStandardItem*>item1;
    QStandardItem *item1_1=new QStandardItem(QString::number(1));
    QStandardItem *item1_2=new QStandardItem("初中部");
    item1_1->setFlags(item1_1->flags()&~Qt::ItemIsSelectable);//禁用选择
    item1.append(item1_1);
    item1.append(item1_2);
    sitemModel->appendRow(item1);

    QList<QStandardItem*>item5;
    QStandardItem *item5_1=new QStandardItem(QString::number(1));
    QStandardItem *item5_2=new QStandardItem("高中部");
    item5_1->setFlags(item1_1->flags()&~Qt::ItemIsSelectable);//禁用选择
    item5.append(item5_1);
    item5.append(item5_2);
    sitemModel->appendRow(item5);

    //创建二级节点,并添加到一级节点
    QList<QStandardItem*>item2;
    QStandardItem *item2_1=new QStandardItem(QString::number(2));
    QStandardItem *item2_2=new QStandardItem("一年级");

    item2.append(item2_1);
    item2.append(item2_2);
    //只有第一个添加的QStandardItem才能作为二级节点的挂载点
    item1_1->appendRow(item2);

    //创建两个三级节点,并添加到二级节点
    QList<QStandardItem*>item3;
    QStandardItem *item3_1=new QStandardItem(QString::number(3));
    QStandardItem *item3_2=new QStandardItem("一班");

    item3.append(item3_1);
    item3.append(item3_2);
    item2_1->appendRow(item3);

    QList<QStandardItem*>item4;
    QStandardItem *item4_1=new QStandardItem(QString::number(3));
    QStandardItem *item4_2=new QStandardItem("二班");

    item4.append(item4_1);
    item4.append(item4_2);
    item2_1->appendRow(item4);



    ui->treeView->setModel(sitemModel);
}

3.创建点击的槽函数

4.连接槽函数

5.效果图如下:

三、TableView的简单应用

1.引入头文件

2.在,ui文件添加table view控件

3.创建tableView视图的构建函数

4.实现函数体

void Widget::InitTableViewFunc()
{
    //1.添加表头,准备数据模型
    QStandardItemModel *stuModel=new QStandardItemModel();
    stuModel->setHorizontalHeaderItem(0,new QStandardItem(QObject::tr("学号")));
    stuModel->setHorizontalHeaderItem(1,new QStandardItem(QObject::tr("姓名")));
    stuModel->setHorizontalHeaderItem(2,new QStandardItem(QObject::tr("性别")));
    stuModel->setHorizontalHeaderItem(3,new QStandardItem(QObject::tr("成绩")));

    //2.绑定到ui的tableView
    ui->tableView->setModel(stuModel);
    ui->tableView->resize(700,500);

    //3.设备表格列的宽度
    ui->tableView->setColumnWidth(0,200);

    //4.添加数据信息
    stuModel->setItem(0,0,new QStandardItem("2021001"));
    stuModel->setItem(0,1,new QStandardItem("张三"));
    stuModel->setItem(0,2,new QStandardItem("男"));
    stuModel->setItem(0,3,new QStandardItem("714"));

    stuModel->setItem(1,0,new QStandardItem("2022002"));
    stuModel->setItem(1,1,new QStandardItem("小花"));
    stuModel->setItem(1,2,new QStandardItem("女"));
    stuModel->setItem(1,3,new QStandardItem("720"));

     stuModel->setItem(2,0,new QStandardItem("2022003"));
     stuModel->setItem(2,1,new QStandardItem("小妮"));
     stuModel->setItem(2,2,new QStandardItem("女"));
     stuModel->setItem(2,3,new QStandardItem("657"));

     ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//禁止编辑

     //降序第四列排序操作
     stuModel->sort(3,Qt::DescendingOrder);
}

5.实现效果图如下:

四、QListWidget的简单应用

1.导入相关头文件

2.在.ui文件添加list widget控件

3.两种导入方法

4.效果图如下:

五、QTreeWidget的简单应用

1.引入头文件

2.在.ui中添加treeWidget控件

3.添加顶级节点,并设置其属性

4.将二级节点添加到一级节点

5.模仿上面两个步骤,丰富数据内容

6.效果图如下:

六、QTableWidget的简单应用

1.在.ui添加TableWidget控件

2.设置行和列

3.设置水平表头

4.使用QList来存放数据信息

5.用循环来赋值表格

6.效果图如下:

总:在开发中,视图控件主要用于展示数据。而且在数据量多的时候用view控件,数据量少的时候用widget控件。

 学习链接:https://xxetb.xetslk.com/s/3Kif2D

标签:QT,item1,视图,任督,setItem,ui,stuModel,new,QStandardItem
From: https://blog.csdn.net/weixin_68122199/article/details/142283092

相关文章

  • 在Qt中使用纯代码实现图片显示
    一、实验目的和要求:QtUI编程综合训练,使学生熟练掌握常用UI组件的使用。1.使用树形结构列表显示磁盘文件夹和图片文件。2.使用显示控件显示图片。3.具有基本的图片查看功能。4.具有菜单栏和工具栏。二、软件设计界面三、软件源代码(源代码要有完整的注释)#include "n......
  • Qt框架自学
    Qt框架是一种强大的跨平台C++应用程序开发工具,它不仅支持图形用户界面的开发,还涵盖了多线程、数据库访问、网络通信等多方面的功能。以下是一些关于Qt框架自学的建议:了解基础概念:在开始学习之前,需要对Qt框架有一个基本的了解。Qt是一个由Trolltech公司(现为TheQtCompany)开发的开......
  • 【Qt】样式属性
    样式属性QSS中的样式属性⾮常多,不需要都记住.核⼼原则还是⽤到了就去查.⽂档的QtStyleSheetsReference章节详细介绍了哪些控件可以设置属性,每个控件都能设置哪些属性等.在样式属性中有一个“盒子模型需要重点介绍”盒子模型在⽂档的CustomizingQtWidgets......
  • QTreeView+QStyledItemDelegate实现编辑名称功能
    1.需求描述点击编辑按钮,进入编辑状态,点击确认和取消按钮退出编辑状态(1)  重写代理createEditor函数这个函数是代理触发编辑信号后,自动创建编辑界面的widget对象,覆盖在item上;EmptyTreeItem就是我们自定义的编辑控件,包括输入框,确认和取消按钮;QWidget*TreeTaskDelegate::......
  • QTreeView置顶排序功能实现
    1.需求描述QTreeView先插入的排在上面,并支持手动置顶进行排序,取消置顶;2.实现方案(1)定义排序角色给每一个插入的QStandardItem对象设置一个排序角色,我们用插入时间来设置这个值;enum CustomRole{   QOrderRole=Qt::UserRole+1};构造函数中设置model的排序角色m_......
  • QStandardItem先设置图标再插入QTreeView会影响插入性能
    所有的界面显示都交代理去绘制,否则会影响插入性能;一开始打算将类型图标通过QStandardItem创建时传给QStandardItem,在插入到model中,后来发现这样会降低插入的性能;pItem=newQStandardItem(QIcon(":/foldericon.svg"),info.value("name").toString());改成用代理QStyledItemDel......
  • QTreeView实现搜索功能并且关键字标红
    1、需求描述实现组织树搜索,关键字红色显示;搜索规则,名称匹配显示,没有匹配不显示,子节点匹配,父节点即使没有匹配也显示;2.实现方法(1)top节点名称匹配关键则显示,否则隐藏voidTreeTaskList::SlotFilterChanged(QStringstrText){m_TreeDelegate->setProperty("FilterString"......
  • QTreeView代理QStyledItemDelegate实现按钮的鼠标hover移动和点击响应
    1.需求描述QStyledItemDelegate实现按钮的点击和响应功能,鼠标移动到按钮上,也会显示tooltip提示信息2.实现方法(1)重写editorEvent函数,根据type类型触发不同的响应函数为了实现按钮的响应,需要重写QStyledItemDelegate类的editorEvent函数,并根据插入时设置进去的type类型,判断是......
  • QTreeView代理QStyledItemDelegate实现按钮、图标的绘制
    1.需求描述代理实现按钮图标状态的绘制实现方法(1)重写paint函数,根据type类型绘制案件、文件夹、监控点、视频任务; 为了实现不同的item的样式,需要继承QStyledItemDelegate类型实现TreeTaskDelegate。重写paint函数,根据不同的类型type去绘制不同的按钮和状态;voidTreeTaskD......
  • QtDesigner控件提升为自定义控件
    创建自定义控件classMyTextEdit(QTextEdit):fanYi=Signal(str,QPoint)def__init__(self,parent=None):super(MyTextEdit,self).__init__(parent)#指定菜单self.setContextMenuPolicy(Qt.CustomContextMenu)#连接菜单函......