Qt QListWidget列表框控件

这篇具有很好参考价值的文章主要介绍了Qt QListWidget列表框控件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Qt中的列表框控件,对应的类是QListWidget

它用于显示多个列表项,列表项对应的类是QListWidgetitem

1 属性和方法

QListWidget有很多属性和方法,完整的可查看帮助文档。这里列出常用的属性和方法:

1.1 外观

列表框控件,支持两种显示模式:列表模式和图标模式

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

其中,QListView::ViewMode是一个枚举,有两个取值:

  • ListView::ListMode 列表模式

    Qt QListWidget列表框控件,Qt,# 控件,qt,c++,开发语言

  • QListView::lconMode 图标模式

    Qt QListWidget列表框控件,Qt,# 控件,qt,c++,开发语言

该属性既可以在属性窗口中设置,也可以在代码中动态设置

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

// 获取和设置交替显示 
bool alternatingRowColors() const;
void setAlternatingRowColors(bool enable);

使能了交替显示的效果:

Qt QListWidget列表框控件,Qt,# 控件,qt,c++,开发语言

未使能交替显示的效果:

Qt QListWidget列表框控件,Qt,# 控件,qt,c++,开发语言

1.2 添加条目

既可以在UI设计师界面添加,也可以通过代码动态添加

UI设计师界面添加:右键列表框控件,选择【编辑项目】,在打开的对话框中添加和删除条目

Qt QListWidget列表框控件,Qt,# 控件,qt,c++,开发语言

在代码中,动态添加条目:

// 在尾部添加
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);

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

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

1.3 删除条目

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

// 方法一 
QListWidgetItem *item = ui->lwProvince->currentItem();
ui->lwPrivince->removeItemWidget(item);
delete item;

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

注意:需要手动 delete 掉条目

1.4 信号和槽

当然了,列表控件的信号和槽有很多,大家需要用到其他信号槽时,直接去查看官方文档即可。

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

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

2 实例

本实例展示列表框的插入和删除操作、修改操作、显示模式

Qt QListWidget列表框控件,Qt,# 控件,qt,c++,开发语言

2.1 布局

在Ul设计师界面,拖拽对应的控件,修改显示的文字、控件的name,然后完成布局

Qt QListWidget列表框控件,Qt,# 控件,qt,c++,开发语言文章来源地址https://www.toymoban.com/news/detail-786844.html

2.2 代码实现

// 在Widget.h 
#ifndef WIDGET_H
#define WIDGET_H

#include <QButtonGroup>
#include <QIcon>
#include <QListWidgetItem>
#include <QRandomGenerator>
#include <QStringList>
#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget {
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    void onRadioButtonClicked();
    void onItemClicked(QListWidgetItem *);
    void onItemDoubleClicked(QListWidgetItem *);
    void onBtnAddClicked();
    void onBtnInsertClicked();
    void onBtnDeleteClicked();

    ~Widget();

private:
    Ui::Widget *ui;

    QButtonGroup *mBtnGroup;
    QStringList *iconStringList;
};
#endif  // WIDGET_H



// 在Widget.cpp
#include "widget.h"

#include "ui_widget.h"

Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) {
    ui->setupUi(this);

    // 设置显示模式
    mBtnGroup = new QButtonGroup(this);
    mBtnGroup->addButton(ui->rbListMode, 0);
    mBtnGroup->addButton(ui->rbIconMode, 1);
    connect(ui->rbListMode, &QRadioButton::clicked, this,
            &Widget::onRadioButtonClicked);
    connect(ui->rbIconMode, &QRadioButton::clicked, this,
            &Widget::onRadioButtonClicked);
    ui->rbListMode->setChecked(true);
    ui->lwProvince->setViewMode(QListView::ListMode);

    // 单击和双击信号和槽
    connect(ui->lwProvince, &QListWidget::itemClicked, this,
            &Widget::onItemClicked);
    connect(ui->lwProvince, &QListWidget::itemDoubleClicked, this,
            &Widget::onItemDoubleClicked);

    // 添加 删除 插入
    connect(ui->btnAdd, &QPushButton::clicked, this, &Widget::onBtnAddClicked);
    connect(ui->btnInsert, &QPushButton::clicked, this,
            &Widget::onBtnInsertClicked);
    connect(ui->btnDelete, &QPushButton::clicked, this,
            &Widget::onBtnDeleteClicked);

    iconStringList = new QStringList{":/res/favicon.ico", ":/res/favicon1.ico"};
}

void Widget::onRadioButtonClicked() {
    int checkedId = mBtnGroup->checkedId();
    if (checkedId == 0) {
        // 列表模式
        ui->lwProvince->setViewMode(QListView::ListMode);
    } else if (checkedId == 1) {
        // 图标模式
        ui->lwProvince->setViewMode(QListView::IconMode);
    }
}

void Widget::onItemClicked(QListWidgetItem *item) {
    // 将条目显示到文本框里面
    ui->leCurrentItem->setText(item->text());
}

void Widget::onItemDoubleClicked(QListWidgetItem *item) {
    // 实现双击可编辑
    item->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable |
                   Qt::ItemIsEnabled);
}

void Widget::onBtnAddClicked() {
    int iconIndex = QRandomGenerator::global()->generate() % 2;
    QIcon icon((*iconStringList)[iconIndex]);
    // 获取文本输入框内容
    QString text = ui->leInput->text();
    QListWidgetItem *item = new QListWidgetItem(icon, text);
    ui->lwProvince->addItem(item);
}

void Widget::onBtnInsertClicked() {
    int iconIndex = QRandomGenerator::global()->generate() % 2;
    QIcon icon((*iconStringList)[iconIndex]);
    // 获取文本输入框内容
    QString text = ui->leInput->text();
    QListWidgetItem *item = new QListWidgetItem(icon, text);
    // ui->lwProvince->addItem(item);

    // 获取当前选中行
    int currentRow = ui->lwProvince->currentRow();
    ui->lwProvince->insertItem(currentRow, item);
}

void Widget::onBtnDeleteClicked() {
    // 获取当前选中的条目
    // QListWidgetItem *item = ui->lwProvince->currentItem();
    // ui->lwProvince->removeItemWidget(item);
    // delete item;

    // 获取当前选中行
    int currentRow = ui->lwProvince->currentRow();
    // 拿取当前行
    QListWidgetItem *item = ui->lwProvince->takeItem(currentRow);
    delete item;
}

Widget::~Widget() {
    delete ui;
}




到了这里,关于Qt QListWidget列表框控件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【QT】——QListWidget的使用

    目录 1.QListWidget和QListWidgetItem 2.外观 2.1列表模式 2.2图标模式 3.常用接口 4.示例 删除列表项 添加列表项 QListWidget 是qt中的列表框控件,它用于显示多个列表项, 列表项 对应的类是 QListWidgetItem . QListWidgetItem可以只包含文字 QListWidgetItem 中可以同时包含 图片和文字 。 列表框控

    2024年02月16日
    浏览(50)
  • Qt6之QListWidget——Qt仿ToDesk侧边栏(1)

    注意:本文不是简单翻译Qt文档或者接口函数,而侧重于无代码Qt设计器下演示使用。 QListWidget也称列表框类,它提供了一个类似于QListView提供的列表视图,但是它具有一个用于添加和删除项的经典的基于项的接口。在实际应用中,多与堆栈窗体类配合使用。 它是Qt这些常用基

    2024年02月13日
    浏览(41)
  • Qt中QListWidget/QListWidgetItem详解

    QListWidget是一个方便类,它提供了一个类似于QListView提供的列表视图,但具有一个经典的基于项目的界面,用于添加和删除项目。QListWidget使用一个内部模型来管理列表中的每个QListWidgetItem。 QListWidget - QListView - QAbstractItemView - QAbstractScrollArea - QFrame - QWidget 要获得更灵活的列表

    2024年02月01日
    浏览(42)
  • QT基础:遍历QListWidget,及QListWidget简单演示,适合初学者食用

    QListWidget 是一个列表框,关于它的详细介绍可以参考:Qt QListWidget详解 初学者如果只是想在短时间内了解 QListWidget 的话,可以参考这里 1、打开QT,创建一个 widget 项目,在UI中加入 QListWidget 和一个 PushButton(等会备用) 可以双击 QListWidget 小部件 , 点左下角的 + 可以在里

    2024年02月12日
    浏览(47)
  • Qt 之tableView控件C++语言

    table view是用的比较多的一个控件之一,我们在展示数据或者表格的时候经常用到。 1、添加表头 2、 添加行数据 3、 获取双击事件 4、获取选中行内容 5、删除行 以上就是QT中TABLE VIEW的使用,其实还有很多属性可以设置,比如是否隐藏表头呀,是否显示网格线呀,QSS样式设置

    2024年02月13日
    浏览(40)
  • 【QT基础教程 十二】QListWidget类解析

    概要:本期介绍QListWidget类的使用,包含QListWidget如何添加项、删除项、遍历等操作。 头文件:#includeQListWidget 模块:QT += widgets 父类:QListView QListWidget类提供了一个基于项(QListWIdgetItem)的列表控件 ,它拥有属于自己的界面。当然,照我们之前说的,它也继承与QWidget类。 其

    2024年02月13日
    浏览(42)
  • Qt中设置QListWidget滑动条滚动速度

    QListWidget继承QListView控件,Qt帮助文档中说 QAbstractItemView::ScrollPerPixel 和QAbstractItemView::ScrollPerItem分别可以实现按item滚动和像数点滚动,但是好像都没效果。还有就是说通过创建QScrollBar有用,但是也没效果。 亲测还是这样有用,记录一下,记录一下!!!

    2024年02月11日
    浏览(37)
  • C++ Qt 开发:ListWidget列表框组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍 ListWidget 列表框组件的常用方法及灵活运用。 QListWidget 是 Qt 中的一个列表框组

    2024年02月04日
    浏览(41)
  • 【QT开发笔记-基础篇】| 第二章 常用控件 | 2.12 表格控件 QTableWidget

    【QT开发笔记-基础篇】| 第二章 常用控件 | 2.12 表格控件 QTableWidget(1) QTableWidget 是 Qt 中的表格控件,可以行列的形式来展示数据 QTableWidget 有很多属性和方法,完整的可查看帮助文档。 在窗口上放置一个 QTableWidget 控件后,既可以在设计师 UI 界面来编辑属性和添加数据,也

    2024年02月12日
    浏览(49)
  • 基于Qt5的图像交互控件开发(C++实现)

    博主近期看到海康VM、halcon以及visionpro视觉软件都包含一个图像智能交互控件,然后近期根据其中的技术原理,也基于Qt5仿照开发了一个类似的功能,包含矩形、旋转矩形、任意多边形、圆、圆环、扇环,直线卡尺以及圆卡尺等常用控件,图像智能交互是在计算机视觉领域中

    2024年02月05日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包