当前位置: 首页 > news >正文

列表控件QListWidget

显示模式

有两种显示模式,列表模式和图标模式

// 获取和设置显示模式
QListView::ViewMode viewMode() const
void setViewMode(QListView::ViewMode mode)

QListView::ViewMode有两个取值

  • QListView::ListMode   列表模式

  • QListView::IconMode 图标模式 

交替背景色

设置相邻行交替显示不同的背景色,便于显示和浏览时定位

// 获取和设置交替显示(win11该接口失效)
bool alternatingRowColors() const
void setAlternatingRowColors(bool enable)

添加条目

// 在尾部添加
void addItem(const QString &label)
void addItem(QListWidgetItem *item)
void addItems(const QStringList &labels)// 在指定行之前添加
void insertItem(int row, QListWidgetItem *item)
void insertItem(int row, const QString &label)
void insertItems(int row, const QStringList &labels) 

使用QListWidgetItem为参数的函数,可以为条目指定图标

QListWidgetItem::QListWidgetItem(const QIcon &icon, const QString &text, QListWidget *parent = nullptr, int type = Type) 

删除条目

列表中的条目可以删除,以删除当前行为例

// 方法一
QListWidgetItem* item = ui->lwProvince->currentItem();
ui->lwProvince->removeItemWidget(item);
delete item;// 方法二
int row = ui->lwProvince->currentRow();
QListWidgetItem* item = ui->lwProvince->takeItem(row);
delete item;

都需要手动delete掉item;

常用信号

// 当条目被单击时,发射该信号
void itemClicked(QListWidgetItem *item);// 当条目被双击时,发射该信号
void itemDoubleClicked(QListWidgetItem *item);

举例

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QPushButton>
#include<QListWidget>
#include<QVBoxLayout>
#include<QHBoxLayout>
#include<QMessageBox>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr): QWidget(parent){resize(200,200);QVBoxLayout* v_box=new QVBoxLayout(this);v_box->setSpacing(20);//创建列表list=new QListWidget(this);//添加一条初始条目QListWidgetItem* item1=new QListWidgetItem(QIcon(":/11.png"),"湖北");list->addItem(item1);v_box->addWidget(list);QHBoxLayout* h_box=new QHBoxLayout();h_box->setSpacing(20);//创建按钮add=new QPushButton("添加一行",this);del=new QPushButton("删除选中行",this);change_mod=new QPushButton("改变显示模式",this);h_box->addWidget(add);h_box->addWidget(del);h_box->addWidget(change_mod);v_box->addLayout(h_box);//绑定槽函数//添加connect(add,&QPushButton::clicked,this,[=](){//直接在尾部添加QListWidgetItem* item1=new QListWidgetItem(QIcon(":/11.png"),"浙江");list->addItem(item1);});//删除connect(del,&QPushButton::clicked,this,[=](){//删除当前选中的行QListWidgetItem* item=list->currentItem();list->removeItemWidget(item);delete item;//记手动delete// //如何遍历list里面控件的条目// for(int i=0;i<list->count();++i)// {//     获取条目的个数,然后根据索引获取条目//     auto item=list->takeItem(i);// }});//改变显示模式connect(change_mod,&QPushButton::clicked,this,[=](){//设为列表或者图标模式if(list->viewMode()==QListWidget::ListMode){list->setViewMode(QListWidget::IconMode);}else if(list->viewMode()==QListWidget::IconMode){list->setViewMode(QListWidget::ListMode);}});//绑定QListWidget控件的信号connect(list,&QListWidget::itemClicked,this,[=](){//将选中条目的文本提示下auto item=list->currentItem();//该接口获取当前选条目QMessageBox::information(this,"",QStringLiteral("当前选中:")+item->text());});}~Widget()=default;
private:QPushButton* add;QPushButton* del;QPushButton* change_mod;QListWidget* list;};
#endif // WIDGET_H

学习链接:https://github.com/0voice


http://www.mrgr.cn/news/36963.html

相关文章:

  • react 为什么不能学习 vue3 进行静态节点标记优化性能?
  • Hadoop三大组件之HDFS(二)
  • Python办公自动化之Excel
  • 论文复现我能行:Dynamic Movement Primitives: Volumetric Obstacle Avoidance
  • Java每日面试题(mysql优化)(day14)
  • LLM - 使用 XTuner 指令微调 多模态大语言模型(InternVL2) 教程
  • 数据库 - MySQL数据查询
  • 如何进行SQL调优?
  • C++入门——与C语言的衔接部分
  • BEV学习---LSS4-模型训练
  • 字节打印流字符打印流
  • 整数在内存中的存储(c语言)
  • 软件无线电3-微相E316和HackRF实现FM调制解调
  • AI 驱动的数据库 TDSQL-C 实战与电商可视分析
  • 用于MRI重建的具有全局感受野的傅里叶卷积块|文献速递--基于多模态-半监督深度学习的病理学诊断与病灶分割
  • 62.【C语言】浮点数的存储
  • TypeError: load() missing 1 required positional argument: ‘Loader‘
  • OJ在线评测系统 后端 判题机模块预开发 架构分析 使用工厂模式搭建
  • MYSQL求月份同比数据和环比数据
  • PPP点对点协议(Point-to-Point Protocol)