Qt多元素控件——QListWidget

embedded/2024/11/14 15:09:13/

文章目录

    • Qt多元素控件
    • QListWidget核心属性、方法和信号
    • 使用演示

Qt多元素控件

Qt中提供了一些多元素控件:

image-20240916195243618

xxxViewxxxWidget的关系:

  • xxxView是更底层的实现
  • xxxWidget是基于xxxView封装而来的

此处的xxxView是MVC结构的典型实现,MVC是软件架构中非常经典的组织形式:

  • M:model 数据
  • V:view 视图
  • C:controller 控制器

xxxView中负责了实现视图,不负责数据然后存储表示,也不负责数据和视图的交互,xxxWidget就基于xxxViewmodelcontroller实现好了

QListWidget核心属性、方法和信号

QListWidget能够显示一个纵向的列表

核心属性:

属性说明
currentRow当前被选中的行
count一共多少行
sortingEnabled是否允许排序
isWrapping是否允许换行
itemAlignment元素对齐方式
selectRectVisible被选中的元素矩形是否可见
spacing元素直接的间隔

核心方法:

方法说明
addItem(const QString& label)
addItem(QListWidgetItem *item)
列表中添加元素
currentItem()返回QListWidgetItem*
表示当前选中的元素
setCurrentItem(QListWidgetItem *item)设置选中哪个元素
setCurrentRow(int row)设置选中第几行的元素
insertItem(const QString& label, int row)
insertItem(QListWidgetItem *item, int row)
在指定的位置插入元素
item(int row)返回QListWidgetItem*
表示第row行的元素
takeItem(int row)删除指定行的元素,返回QListWidgetItem*
表示是哪个元素被删除了

列表当中的每一个元素,称为一个item,更具体的说,是通过QListWidgetItem类表示的

核心信号:

信号说明
currentItemChanged(QListWidgetItem* current, QListWidgetItem* old)选中不同元素时会触发
参数是当前选中的元素和之前选中的元素
currentRowChanged(int)选中不同的元素时会触发
参数是当前选中元素的行数
itemChecked(QListWidgetItem* item)点击某个元素时触发
itemDoubleClicked(QListWidgetItem* item)双击某个元素时触发
itemEntered(QListWidgetItem* item)鼠标进入元素时触发

使用演示

页面属性设置:

image-20240915211659851

代码添加元素:

ui->listWidget->addItem("C++");
ui->listWidget->addItem("Linux");
ui->listWidget->addItem(new QListWidgetItem("Data Structure"));

QListWidgetItem中,不仅仅可以设置内容,还可以设置字体属性、图标、文字大小、是否能被选中等状态

图形化界面添加元素:

image-20240915212219925

Tips:

如果初始化的内容是固定的,那么可以用代码也可以用图形化;

但如果初始化的内容是不固定的,要通过读取文件/网络来构造数据,此时就必须通过代码的方式添加

完整代码:

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//添加元素ui->listWidget->addItem("C++");ui->listWidget->addItem("Linux");ui->listWidget->addItem(new QListWidgetItem("Data Structure"));}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_insert_clicked()
{//获取输入框中内容const QString &text = ui->lineEdit->text();//添加到listWidgetItem当中ui->listWidget->addItem(text);
}void Widget::on_pushButton_erase_clicked()
{//获取选中元素int row = ui->listWidget->currentRow();//未被选中返回-1if(row < 0){return;}//删除元素ui->listWidget->takeItem(row);
}void Widget::on_listWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
{//感知列表变化if(current != nullptr){qDebug() << "当前选中的元素: " << current->text();}if(previous != nullptr){qDebug() << "上次选中元素: " << previous->text();}qDebug() << "--------------";
}

GIF 2024-9-15 21-36-46


http://www.ppmy.cn/embedded/113066.html

相关文章

Ubuntu使用docker安装Oracle23aiFree

Oracle 安装docker安装部署 官网&#xff1a;Oracle23AI 功能亮点 AI战略搜索 Oracle AI Vector Search专为人工智能&#xff08;AI&#xff09;工作负载而设计&#xff0c;允许您基于语义而不是关键字查询数据。 JSON 关系二元性 数据可以作为 JSON 文档或关系表透明地访问和…

网络高级(学习)2024.9.11

目录 Modbus库函数 1.初始化和释放函数 2.功能函数 3.功能案例 Modbus RTU 1.特点 2.协议格式 3.编程思路 Modbus库函数 1.初始化和释放函数 modbus_t* modbus_new_tcp(const char *ip, int port) 功能&#xff1a;以TCP方式创建Modbus实例&#xff0c;并初始化 参数…

【数据库】MySQL-基础篇-多表查询

专栏文章索引&#xff1a;数据库 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、多表关系 1.一对多 2.多对多 3.一对一 二、多表查询概述 1.数据准备 2.概述 3.分类 三、内连接 1.隐式内连接 2.显式内连接 3.案例 四、外连接 1.左外连接 2.右外连…

08 vue3之认识bem架构及less sass 和scoped

bem架构 他是一种css架构 oocss 实现的一种 &#xff08;面向对象css&#xff09; &#xff0c;BEM实际上是block、element、modifier的缩写&#xff0c;分别为块层、元素层、修饰符层&#xff0c;element UI 也使用的是这种架构 1. BEM架构 1. 介绍 1. BEM是Block Element M…

采用qt做一个命令行终端

qt做一个类似系统命令行终端的工具&#xff0c;方便集成到自己的软件里使用&#xff0c;这样能保证软件的整体性&#xff0c;而且是真正的做到和系统命令行终端一样的交互方式&#xff0c;而不是单独搞个编辑框的方式输入命令&#xff08;大部分博客都是做成这个样子&#xff0…

将硬盘的GPT 转化为MBR格式

遇到的问题 在重新安装系统时&#xff0c;磁盘遇到无法空间分配给系统。 解决方式 使用Windows10镜像 U盘安装&#xff0c;选择磁盘时&#xff0c;转换磁盘格式为MBR。然后退出安装程序。 Shift F10# 输入 diskpart# 查看磁盘信息 list disk# 选择需要转换的磁盘&#xff0…

单机快速部署开源、免费的分布式任务调度系统——Apache DolphinScheduler

本文主要为大家介绍Apache DolphinScheduler的单机部署方式&#xff0c;方便大家快速体验。 环境准备 需要Java环境&#xff0c;这是一个老生常谈的问题&#xff0c;关于Java环境的安装与配置期望大家都可以熟练掌握。 验证java环境 java -version 下载安装包并解压 使用wg…

uniapp 发布苹果IOS详细流程,包括苹果开发者公司账号申请、IOS证书、.p12证书文件等

记录一下uniapp发布苹果IOS的流程。 一、苹果开发者公司账号申请 1、邓白氏编码申请&#xff08;先申请公司邓白氏编码&#xff0c;这一步需要1-2周&#xff0c;没有这个编码苹果开发者没法申请&#xff0c;已有编码的跳过此步骤&#xff09;&#xff1a; 1&#xff09;联系苹…