Qt多元素控件——QListWidget

news/2024/9/22 19:55:03/

文章目录

    • 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/news/1528986.html

相关文章

(已解决)vscode如何传入argparse参数来调试/运行python程序

文章目录 前言调试传入参数运行传入参数延申 前言 以前&#xff0c;我都是用Pycharm专业版的&#xff0c;由于其好像在外网的时候&#xff0c;不能够通过VPN来连接内网服务器&#xff0c;我就改用了vscode。改用了之后&#xff0c;遇到一个问题&#xff0c;调试或者运行python…

【论文阅读】Benchmarking Retrieval-Augmented Generation for Medicine

论文&#xff1a;https://arxiv.org/abs/2402.13178 代码&#xff1a; GitHub - Teddy-XiongGZ/MIRAGE: Official repository of the MIRAGE benchmark GitHub - Teddy-XiongGZ/MedRAG: Code for the MedRAG toolkit 研究背景&#xff1a; 系统地评估医用rag QA系统&#xff0…

使用Rust直接编译单个的Solidity合约

这里写自定义目录标题 使用Rust直接编译单个的Solidity合约前言预备知识准备工作示例 使用Rust直接编译单个的Solidity合约 前言 我们知道&#xff0c;我们平常开发Solidity智能合约时一般使用Hardhat框架&#xff0c;但是如果你是一个Rustacean (这是由 “Rust” 和 “crust…

通过springcloud gateway优雅的进行springcloud oauth2认证和权限控制

代码地址 如果对你有帮助请给个start&#xff0c;本项目会持续更新&#xff0c;目标是做一个可用的快速微服务开发平台&#xff0c;成为接私活&#xff0c;毕设的开发神器&#xff0c; 欢迎大神们多提意见和建议 使用的都是spring官方最新的版本&#xff0c;版本如下&#xff1…

phpstudy 建站使用 php8版本打开 phpMyAdmin后台出现网页提示致命错误:(phpMyAdmin这是版本问题导致的)

报错提示&#xff1a; 解决方法&#xff1a;官网下载phpmyadmin 5.2.1版本。 下载地址&#xff1a;phpMyAdmin 将网站根目录phpMyAdmin4.8.5里面的文件换成 官网下载的5.2.1版本即可。 重启网站&#xff0c;打开phpMyAdmin后台即可&#xff08;若打不开更改 mysql密码即可&am…

Apache ZooKeeper 及 Curator 使用总结

1. 下载 官网地址&#xff1a;Apache ZooKeeper 点击下载按钮 选择对应的版本进行下载 2. 使用 1、解压 tar -zxf apache-zookeeper-3.9.2-bin.tar.gz2、复制配置文件&#xff0c;有一个示例配置文件 conf/zoo_sample.cfg&#xff0c;此文件不能生效&#xff0c;需要名称为…

C语言6大常用标准库 -- 4.<math.h>

目录 引言 4. C标准库--math.h 4.1 简介 4.2 库变量 4.3 库宏 4.4 库函数 4.5 常用的数学常量 &#x1f308;你好呀&#xff01;我是 程序猿 &#x1f30c; 2024感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&#xff0c;挖掘无限可能&#xff0c;共同成长&…

数据结构:堆排序

更完堆&#xff0c;再更一期堆排序 利用容器实现堆排序 在C等高级语言中&#xff0c;基本上都有堆或者优先队列等容器&#xff0c;借助这些容器很容易实现堆排序。 将数组里面的元素先插入到容器中&#xff0c;建好堆&#xff0c; 接着将容器中的元素&#xff0c;按照升序或降…