欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > Qt多元素控件——QListWidget

Qt多元素控件——QListWidget

2025/2/25 10:18:53 来源:https://blog.csdn.net/Dirty_artist/article/details/142289383  浏览:    关键词:Qt多元素控件——QListWidget

文章目录

    • 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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com