视图便捷类(QListWidget,QTableWidget,QTreeWidget)

news2024/12/23 8:49:41

常见的视图便捷类: 

  • QListWidget  列表
  • QTableWidget  表格
  • QTreeWidget  树

列表便捷类:QListWidget (继承自QListView)

构造函数

 常用函数:

addItem()添加项目
addItems()添加多个项目
count()项目的数量
currentItem()返回当前的项目
currentRow()保存当前项目的行
editItem()编辑该项目
findItems()查找项目
item()返回该行的项目
itemAt()返回指定坐标的项目
itemWidget()返回指定项的控件
openPersistentEdior()开启该项的编辑器
closePersitentEdior()关闭该项的编辑器
removeItemWidget()删除该项目的控件
row()返回该行的项目
selectedItems()返回该列表的所有项目
setCurrentItem()设置默认项
setCurrentRow()设置默认行
setItemWidget()设置项目控件
setSelectionModel()设置选择模式
sortItems()对项目排序
takeItem()从列表小部件中的给定中删除并返回项目;从列表小部件中删除的项目将不受Qt管理,需要手动删除
clear()清空所有项

排序方式:

Qt::AscendingOrder项目按升序排序
Qt::DescendingOrder项目按降序排序
    QListWidget *listwidget=new QListWidget(this);//创建一个列表控件
    //添加单个项
    listwidget->addItem("1");
    //添加多个项
    QStringList list;
    list<<"2"<<"3"<<"4";
    listwidget->addItems(list);
    //添加控件
    QPushButton *push=new QPushButton("点击");
    listwidget->setItemWidget(listwidget->item(0),push);//第一个项目添加一个控件
    //设置默认项
    listwidget->setCurrentItem(listwidget->item(2));//设置第3个项目为默认项
    //设置默认行
    listwidget->setCurrentRow(3);//设置第4行为默认行
    //删除并获取项目控件
    QListWidgetItem *button=listwidget->takeItem(0);//删除并获取第一个项目控件
    //只删除项目控件
    listwidget->removeItemWidget(listwidget->item(1));//删除第一个项目
    //开启编辑
    listwidget->openPersistentEditor(listwidget->item(2));
    //排序
    listwidget->sortItems(Qt::AscendingOrder);//升序
    listwidget->sortItems(Qt::DescendingOrder);//降序

最后运行结果:

 树便捷类:QTreeWidget(继承自QTreeView)

 构造函数:

常用函数:

closePersistentEditor()关闭编辑
openPersistentEditor()开启编辑

addTopLevelItem()

addTopLevelItems()

添加顶级项目
columnCount()显示列数
currentColumn()返回当前列
currentItem()默认项目
editItem()编辑项目
findItems()查找项目
indexOfTopLevelItem()返回给定顶级的索引

insertToplevelItem()

insertToplevelItems()

插入顶级项
itemAbove()返回该项的上方的项目
itemBelow()返回项目下方的项目
itemAt()获取坐标处的项
itemWidget()返回项目的控件
reomoveItemWidget()删除项目的控件
selectionItems()获取控件全部的项目
setColumnCount()设置列显示的列数
setCurrentItem()设置默认项
setHeaderItem()设置标题项
setHeaderLabel()设置标签
setHeaderLabels()设置多个标签
setItemWidget()设置项目控件
sortColiumn()返回用于排序的列
sortItems()给定列进行排序
takeTopLevelItem()删除并获取顶部项        

插入子项:

对QtreeWidgetItem使用以下函数

  • insertChild()设置子项
  • praent()获取父项

简单的用法:

    QTreeWidget *treewidget=new QTreeWidget(this);//创建一个树控件
    treewidget->setFixedSize(500,500);//设置控件大小
    //设置列数和标签
    treewidget->setColumnCount(5);
    QStringList list;
    list<<"A"<<"B"<<"c"<<"D"<<"E";
    treewidget->setHeaderLabels(list);
    //添加项目一
    QTreeWidgetItem *item=new QTreeWidgetItem(treewidget);
    item->setText(0,"11111");
    //添加子项
    QTreeWidgetItem *childitem=new QTreeWidgetItem(item);
    childitem->setText(0,"00000");//设置内容
    childitem->setText(1,"11111");
    childitem->setText(2,"22222");
    //添加项目二
    QTreeWidgetItem *item2=new QTreeWidgetItem(treewidget);
    item2->setText(0,"AAAAA");
    //添加子项
    QTreeWidgetItem *childitem2=new QTreeWidgetItem(item2);
    childitem2->setText(0,"BBBBB");//设置内容
    childitem2->setText(1,"CCCCC");
    childitem2->setText(2,"DDDDD");
    //删除项
    treewidget->takeTopLevelItem(0);//删除第一个项

树控件更复杂的使用可点击该链接:QTreeWidget_旷工锁的博客-CSDN博客_setheaderlabels 

表格控件:QTableWidget(继承自QTableView)

表小部件为应用程序提供标准的表格显示工具。QTableWidget 中的项目由 QTableWidgetItem 提供 。

构造函数:

 常用函数:

cellWidget()获取给定位置的小组件
openPersistentEditor()开启编辑器
closePersistentEditor()关闭编辑器
column()获取项的列
row()返回项的行
columnCount()返回列数
rowCount()返回行数
currentColumn()返回当前的列
currentRow()返回当前的行
currentItem()返回当前的项
findItems()查找项
item()返回指定位置的项
itemAt()返回指定位置的项的指针
removeCellWidget()移除指定位置的项控件
selectedItems()获取全部项
selectedRanges()获取选中区域的项
setCellWidget()设置指定位置项的控件
setColumnCount()设置列数
setCurrentItem()设置默认项
setHorizontalHeaderItem()设置水平标题项
setVerticalHeaderitem()设置垂直标题项
setHorizontalHeaderLabel()设置水平标题标签
setVerticalHeaderLabel()设置垂直标题标签
setRowCount()设置行数        
sortItems()排序
takeItem()删除项
takeHorizontalItem()删除水平标题项
takeVerticalHeaderItem()删除垂直标题项

列举少量函数的使用:

QTableWidget *table=new QTableWidget(5,5,this);//创建一个5行5列的表格
    //等价于
    //QTableWidget* table= new QTableWidget(this);
    //table->setRowCount(5);//设置行数
    //table->setColumnCount(5);//设置列数

    table->setFixedSize(700,700);//设置大小
    //添加水平标题项
    QTableWidgetItem *item1=new QTableWidgetItem;
    item1->setText("A");
    table->setHorizontalHeaderItem(0,item1);//设置水平标题项
    //添加竖直标题项
    QTableWidgetItem *item2=new QTableWidgetItem;
    item2->setText("BBBBB");
    table->setVerticalHeaderItem(0,item2);//设置竖直标题项
    //添加项
    int number=0;
    for(int i=0;i<table->rowCount();i++)
    {
        for(int j=0;j<table->columnCount();j++)
        {
            QTableWidgetItem *item=new QTableWidgetItem;
            item->setText(QString("%1").arg(number++));
            table->setItem(i,j,item);
        }
    }
    //设置默认项
    table->setCurrentItem(table->item(2,2));//设置坐标为2,2的为默认项
    //开启编辑
    table->openPersistentEditor(table->item(2,2));//开启坐标2,2的编辑器

设置项目视图的拖放

对QListWidget、QTreeWidget、QTableWidget 的视图进行拖放:

  • 启动项目拖动,将dragEnabled属性设置为true
  • 允许用户在视图中放置内部或外部项,请将视图的viewport() 的 accptDrops 属性设置为 。true
  • 若要向用户显示当前正在拖动的项在放置时将放置的位置,请设置视图的 showDropIndicatorShown属性设置为true。这为用户提供了有关视图中项目放置的持续更新信息。

实现拖动项目(用拖动的项目取代所放下位置的项目) 

    table->setSelectionMode(QAbstractItemView::SingleSelection);//当用户选择某个项目时,任何已选择的项目都将变为未选中状态
    table->setDragEnabled(true);//开启项目拖动
    table->viewport()->setAcceptDrops(true);//允许用户在视图中放置内部或外部项
    table->setDropIndicatorShown(true);

初始状态:

 将11拖动到12的位置:

 再添加以下代码实现,拖动项目位置置空,拖动项目取代放下位置的项目

table->setDragDropMode(QAbstractItemView::InternalMove);

初始状态:

  将11拖动到12的位置:

 也可以对模型/视图类实现拖动:(QListView、QTreeView、QTableView)

设置拖放视图遵循与便利视图相同的模式。

QListView *listView = new QListView(this);
listView->setSelectionMode(QAbstractItemView::ExtendedSelection);
listView->setDragEnabled(true);
listView->setAcceptDrops(true);
listView->setDropIndicatorShown(true);

但对于视图显示的数据的访问是由模型控制因此使用的模型还必须提供对拖放操作的支持。可以通过重新实现 QAbstractItemModel::supportDropActions() 函数来指定模型支持的操作。

Qt::DropActions

Qt::CopyAction将数据复制到目标
Qt::MoveAction将数据从源移动到目标
Qt::LinkAction创建从源到目标的链接
Qt::ActionMask
Qt::IgnoreAction不对数据执行任何操作
Qt::TargetMoveAction在Windows上,当目标应用程序应接管D&D数据的所有权时,使用此值,即源应用程序不应删除数据。在 X11 上,此值用于执行移动。TargetMoveAction 未在 Mac 上使用。
Qt::DropActions DragDropListModel::supportedDropActions() const
{
    return Qt::CopyAction | Qt::MoveAction;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微内核、宏内核、内核模块、printk

文章目录一、微内核和宏内核二、内核模块三、内核模块code四、Makefile注意注&#xff1a;&#xff0c;?, : 区别五、prink查看prink打印优先级修改printk的打印优先级六、内核模块参数module_param与module_param_array宏定义的使用七、内核符号表--全局共享函数接口与变量1.…

2022年最新中国科学院期刊分区表变化 | 生物类、医学类

fenqu❝早上刷到了新发布的《2022年中国科学院文献情报中心期刊分区表》&#xff08;https://mp.weixin.qq.com/s/QVfwnGPCjvOaLtBvGM184g&#xff09;&#xff0c;今天利用有限的非卧床时间浅爬了一下生物和医学大类2022和2021年的数据&#xff0c;做个简单的对比。&#xff0…

学习记录-mybatis+vue+elementUi实现批量删除

老规矩&#xff0c;还是从后端到前端还是分为四步骤 步骤一 ①写SQL语句 mapper接口代码&#xff1a; /*** 批量删除* param ids*/void deleteByIds(Param("ids") int[] ids);实现语句&#xff1a; <delete id"deleteByIds">deletefrom tb_brandwh…

本周推荐 | 设计模式在淘宝营销价格体系的实践

推荐语&#xff1a;本文详细描述责任链、中介者、适配器等多种设计模式在淘宝营销价格服务中的应用&#xff0c;从而实现了一套可扩展性的架构&#xff0c;应对灵活多变营销价格需求。——大淘宝技术研发工程师 小枫每年淘宝都有双11、双12等大促&#xff0c;我们价格服务小组的…

【车载开发系列】UDS诊断---常见的ISO标准集合

【车载开发系列】UDS诊断—常见的ISO标准集合 常见的ISO标准集合【车载开发系列】UDS诊断---常见的ISO标准集合一.前言二.基于CAN总线ISO1&#xff09;ISO118982&#xff09;ISO115193&#xff09;ISO15765三.UDS诊断1&#xff09;ISO142292&#xff09;ISO14229系列规范四.CAN…

我国余热发电行业现状:政策及企业积极性双管齐下 市场发展潜力大

根据观研报告网发布的《中国余热发电行业现状深度研究与发展前景预测报告&#xff08;2022-2029年&#xff09;》显示&#xff0c;余热发电是指利用生产过程中多余的热能转换为电能的技术。余热发电技术可以回收利用如水泥、玻璃、钢铁、冶金等行业的余热资源&#xff0c;将余热…

深入浅出synchronized关键字

前言 无论在日常工作还是面试过程中&#xff0c;synchronized关键字作为并发场景下的操作&#xff0c;是一定要掌握的&#xff0c;本文从synchronized的使用方式、原理及优化三个方面&#xff0c;对synchronized关键字作一个系统化的说明。 使用方式 synchronized主要有三种…

Apache DolphinScheduler 发布 3.1.2 版本,Python API 实现优化

点亮 ⭐️ Star 照亮开源之路https://github.com/apache/dolphinscheduler近日&#xff0c;Apache DolphinScheduler 发布了 3.1.2 版本。此版本主要基于 3.1.1 版本进行了 6 处 Python API 优化&#xff0c;19 处 Bug 修复&#xff0c;并更新了 4 个文档。其中较为重要的 Bug…

HashMap1.7和1.8源码解析

1.HashMap &#xff08;1&#xff09;数据结构 在JDK1.7中&#xff0c;HashMap中的数据结构是数组单链表的组合&#xff1b;在JDK1.8中的HashMap存储结构是由数组、链表、红黑树这三种数据结构形成。 &#xff08;2&#xff09;JDK1.7中HashMap源码分析 &#xff08;2.1&am…

Portal门户常见宕机或性能低问题分析与七大解决之道

不论使用什么产品构建门户&#xff0c;只要是基于Java技术的&#xff0c;就很容易宕机或出现性能低的问题。因为Portal产品比较复杂&#xff0c;且集成的数据特别多&#xff0c;架构特别复杂&#xff0c;涉及到的数据通信特别多。宕机或性能低也通常是用户较为头疼的问题。经常…

excel文本函数应用:单元格中的数字和字母,如何判断?

文本字符是Excel中除了数字以外的另一种非常常用的数据类型&#xff0c;Excel也提供了大量的文本函数。利用这些函数我们可以用来判断字符串开头是否为数字、字符串是否同时包含了数字和英文、字符串是否包含了指定字符&#xff0c;可以用来转换英文字母的大小&#xff0c;可以…

Java基础之Stream的使用078

1. Stream 的使用 Stream 是什么&#xff1f; Stream 是数据渠道&#xff0c;用于操作数据源&#xff08;数组、集合等&#xff09;所生成的元素序列。 Java8两大最为重要的改变就是 Lambda表达式 与 Stream API&#xff0c;这两种改变的引入带来的是新的抽象方式 &#xff08…

目标检测之Fast RCNN概述

基本原理 Fast Rcnn主要步骤为 利用SR算法生成候选区域利用VGG16网络进行特征提取利用第一步生成的候选区域在特征图中得到对应的特征矩阵利用ROI pooling将特征矩阵缩放到相同大小并平展得到预测结果 相对于RCNN的优化 主要有三个改进 不再将每一个候选区域依次放入CNN网络…

【基于通道-空间注意的高分辨率锐化】

Channel–spatial attention-based pan-sharpening of very high-resolution satellite images &#xff08;基于通道-空间注意的很高分辨率卫星影像全色锐化&#xff09; 全色锐化处理旨在生成新的合成输出图像&#xff0c;其保留全色的空间细节和多光谱图像输入的光谱细节。…

【服务器端程序的演进过程】

目录 1 服务器端程序的演进过程 阶段一:静态服务器 阶段二:普通动态服务器 阶段三: 以用户共享内容为主的互联网生态 阶段四: 微服务时代(有高并发需求或特征的网站) 2 Java服务器项目分类 3 微服务概述 3.1 什么是微服务 3.2 为什么需要微服务 3.3 怎么搭建微服务项…

C#获取计算机详细的软件和硬件信息

利用System.Management提供的类可以用于读取本地计算机设备的各种数据&#xff0c;包括操作系统、软件、硬件的各种详细信息&#xff0c;内容很丰富。 System.Management的命名空间下&#xff0c;ManagementObjectSearcher类用于查询特定类型的设备&#xff0c;ManagementObjec…

转行做“程序员”很难?这里有几个建议...

“是什么&#xff1f;为什么&#xff1f;怎么样&#xff1f;”的灵魂三连问在我们生活中比比皆是&#xff0c;目的是为了清晰思考和看到事物的本质。对于编程学习也是一样&#xff0c;需要带着疑问从本质上去学习编。 本人是某985高校的本硕连读&#xff0c;非计算机科班出身&…

利器 | AppCrawler 自动遍历测试实践(三):动手实操与常见问题汇总

1080469 14.7 KB 上两篇文章介绍了自动遍历的测试需求、工具选择和 AppCrawler 的环境安装、启动及配置文件字段基本含义&#xff0c;这里将以实际案例更加细致的说明配置文件的用法和一些特殊场景的处理。 下面我们继续之前的例子&#xff0c;在雪球搜索框输入搜索内容后的页面…

CloudFlare系列--功能介绍与常用配置

原文网址&#xff1a;CloudFlare系列--功能与特性的介绍_IT利刃出鞘的博客-CSDN博客 简介 本文介绍CloudFlare的功能与常用的配置。 功能介绍 CloudFlare是世界最强的网络服务商。它可以提供如下服务&#xff1a; 防御DDoS攻击 世界最强防御DDos攻击的厂商。域名注册 世界最…

JavaWeb语法四:多线程案例

目录 1.单例模式 1.1&#xff1a;饿汉模式 1.2&#xff1a;懒汉模式 2.阻塞式队列 2.1:生产者消费者模型 2.2&#xff1a;阻塞队列的模拟实现 3.线程池 3.1&#xff1a;标准库中的线程池 3.2&#xff1a;模拟实现线程池 前言&#xff1a;前一篇我们讲了线程不安全的原因…