百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

Qt模型视图框架:QListView、QListWidget

xsobi 2024-12-11 17:49 1 浏览

QListView

一、描述

QListView 将存储在模型中的项目呈现为简单的非分层列表或图标集合。此视图不显示水平或垂直标题。

QStandardItemModel * model = new QStandardItemModel;
for(int i = 0; i < 11; ++i)
{
QStandardItem *item = new QStandardItem(QString::number(i));
model->appendRow(item);
}
QListView listView;
listView.setModel(model);
listView.show();

二、类型成员

1、enum QListView::Flow:项目布局流向方向。

  • LeftToRight:项在视图中从左到右排列。如果 isWrapping 属性为 true,则布局将在到达可见区域的右侧时换行。
  • TopToBottom:项在视图中从上到下排列。(默认)

2、enum QListView::LayoutMode:项目的布局是应该立即发生还是延迟发生。

  • SinglePass:项目一次全部布局。
  • Batched:项目按 batchSize属性进行批量布局。

3、enum QListView::Movement:如何在视图中移动项目

  • Static:不能移动项目。(默认)
  • Free:可以自由移动项目。
  • Snap:移动时项目对齐到指定的网格。

4、enum QListView::ResizeMode:在调整视图大小时是否再次对项目进行布局。

Fixed:只有在第一次显示视图时才会对项目进行布局。

Adjust:每次调整视图大小时都会对项目进行布局。

5、enum QListView::ViewMode:视图模式

  • ListMode:项目使用从上到下流布局,小尺寸,禁用拖放。
  • IconMode:项目使用从左到右流布局,大尺寸,启用拖放。

三、属性成员

1、batchSize : int

如果 layoutMode 设置为Batched,则此属性保存每个批次中布局的项目数。默认值为 100。

2、gridSize : QSize

此属性是布置项目的网格的大小。默认为空尺寸,这意味着没有网格并且布局不在网格中完成。 将此属性设置为非空大小会打开网格布局。(当网格布局生效时,spacing属性将被忽略。)

3、isWrapping : bool

此属性保存当可见区域中没有更多空间时布局是否应换行。布局环绕的点取决于flow(QListView::Flow)属性。默认情况下,此属性为 false。

4、itemAlignment : Qt::Alignment

此属性保存其单元格中每个项目的对齐方式。这仅在具有 TopToBottom 流和 isWrapping 为true时受支持。默认为 0,即项目完全填充其单元格。

5、modelColumn : int

此属性保存模型中可见的列。

6、selectionRectVisible : bool

如果选择模式处于可以选择多个项目的模式,选择矩形是否可见。默为 false。(QAbstractItemView::SelectionMode)

7、spacing : int

此属性是在布局中的项目周围填充的空白空间的大小。默认为 0。

8、uniformItemSizes : bool

此属性保存列表视图中的所有项目是否具有相同的大小。默认为 false。

9、wordWrap : bool

如果此属性为true,则项目文本会在必要的断字处换行。默认为 false。

四、成员函数

1、[signal] void indexesMoved(const QModelIndexList &indexes)

指定的索引在视图中移动时会发出此信号。

2、void clearPropertyFlags()

清除设置的 QListView::ViewMode。

3、bool isRowHidden(int row)

某行是否已隐藏。

4、QRect rectForIndex(const QModelIndex &index)

返回模型中 index 位置项的矩形。

5、void setRowHidden(int row, bool hide)

设置某行隐藏或者显示。

【领QT开发教程学习资料,点击下方链接莬费领取↓↓,先码住不迷路~】

点击这里:「链接」


QListWidget

一、描述

QListWidget 是一个方便的类,它提供类似于 QListView 提供的列表视图,但具有用于添加和删除项目功能的界面。 QListWidget 使用内部模型来管理列表中的每个 QListWidgetItem。

有两种方法可以将项目添加到列表中:

可以使用列表小部件作为其父小部件来构建。

QListWidget *listWidget = new QListWidget(this);
new QListWidgetItem(tr("Oak"), listWidget);
new QListWidgetItem(tr("Fir"), listWidget);
new QListWidgetItem(tr("Pine"), listWidget);

可以在没有父小部件的情况下构建并稍后添加到列表中。

QListWidgetItem *newItem = new QListWidgetItem;
newItem->setText(itemText);
QListWidget *listWidget = new QListWidget(this);
listWidget->insertItem(row, newItem);

二、属性成员

1、count : const int

此属性保存列表中的项目数,包括任何隐藏项目。

2、currentRow : int

此属性保存当前项目的行。

3、sortingEnabled : bool

此属性保存是否启用排序。默认值为false。

三、成员函数

3.1、信号

1、void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)

每当当前项目发生变化时都会发出此信号。

previous 是先前具有焦点的项目; current 是新的当前项目。

2、void currentRowChanged(int currentRow)

每当当前项目发生变化时都会发出此信号。currentRow 是当前项目的行。 如果没有当前项,则 currentRow 为 -1。

3、void currentTextChanged(const QString ¤tText)

每当当前项目发生变化时都会发出此信号。currentText 是当前项中的文本数据。 如果没有当前项,则 currentText 无效。

4、void itemActivated(QListWidgetItem *item)

当项目被激活时发出这个信号。 当用户单击或双击它时,该项目将被激活,具体取决于系统配置。 当用户按下激活键时它也会被激活(在 Windows 和 X11 上这是返回键,在 Mac OS X 上是 Command+O)。

5、void itemChanged(QListWidgetItem *item)

每当 item 的数据发生变化时,就会发出此信号。

6、void itemClicked(QListWidgetItem *item)

当在小部件中的item上单击鼠标按钮时,此信号随指定item一起发出。

7、void itemDoubleClicked(QListWidgetItem *item)

当在小部件中的item上双击鼠标按钮时,此信号随指定item一起发出。

8、 void itemEntered(QListWidgetItem *item)

当鼠标光标进入一个item时发出这个信号。item是输入的项目。此信号仅在打开 mouseTracking(QWidget::setMouseTracking(true))或在移动到item时按下鼠标时发出。

9、void itemPressed(QListWidgetItem *item)

当在小部件中的item上按下鼠标按钮时,此信号随指定item一起发出。

10、void itemSelectionChanged()

只要选择发生变化,就会发出该信号。

3.2、函数

1、void clear()

删除视图中的所有项目。

2、void scrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)

如有必要,滚动视图以确保项目可见。hint 指定操作后项目应位于的位置。

3、void addItem(const QString &label) / void addItems(const QStringList &labels)

在列表小部件的末尾插入带有文本标签的项目。

4、void addItem(QListWidgetItem *item)

在列表小部件的末尾插入项目。

警告: QListWidgetItem 只能添加到 QListWidget 一次。 将相同的 QListWidgetItem 多次添加到 QListWidget 将导致未定义的行为。

5、void closePersistentEditor(QListWidgetItem *item)

关闭给定项目的持久编辑器。

6、QListWidgetItem * currentItem()

获取当前item。

7、void editItem(QListWidgetItem *item)

如果item可编辑,则开始编辑item。

8、QList<QListWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags)

使用flags查找具有与text匹配的文本的项目。

  • enum Qt::MatchFlag:此枚举描述了在模型中搜索项目时可以使用的匹配类型。
  • Qt::MatchExactly:执行基于 QVariant 的匹配。
  • Qt::MatchFixedString:执行基于字符串的匹配。除非还指定了 MatchCaseSensitive 标志,否则基于字符串的比较不区分大小写。
  • Qt::MatchContains:搜索词包含在项目中。
  • Qt::MatchStartsWith:搜索词匹配项的开头。
  • Qt::MatchEndsWith:搜索词匹配项的结尾。
  • Qt::MatchCaseSensitive:搜索区分大小写。
  • Qt::MatchRegularExpression:使用正则表达式作为搜索词来执行基于字符串的匹配。使用 QRegularExpression。使用此标志时,可以将 QRegularExpression 对象作为参数传递,并将直接用于执行搜索。区分大小写标志将被忽略。
  • Qt::MatchWildcard:使用带有通配符的字符串作为搜索词来执行基于字符串的匹配。
  • Qt::MatchWrap:执行环绕搜索,这样当搜索到达模型中的最后一项时,它会再次从第一项开始,一直持续到检查完所有项为止。
  • Qt::MatchRecursive:搜索整个层次结构。

注意:

  • Qt::MatchExactly
  • Qt::MatchContains
  • Qt::MatchStartsWith
  • Qt::MatchEndsWith
  • Qt::MatchRegularExpression
  • Qt::MatchWildcard
  • Qt::MatchFixedString

是互斥的。通过在 Qt::MatchFlags 参数中设置其中几个实现的行为是未定义的。

9、QModelIndex indexFromItem(const QListWidgetItem *item) 【常用】

返回与给定项目关联的 QModelIndex。

10、QListWidgetItem * itemFromIndex(const QModelIndex &index) 【常用】

返回指向与给定索引关联的 QListWidgetItem 的指针。

11、void insertItem(int row, QListWidgetItem *item)

void insertItem(int row, const QString &label)
void insertItems(int row, const QStringList &labels)

在row给定的列表中的位置插入项目。

12、bool isPersistentEditorOpen(QListWidgetItem *item)

返回是否为项目项打开了持久编辑器。

13、QListWidgetItem * item(int row)

返回列表中给定行的项目。

14、QListWidgetItem * itemAt(const QPoint &p)

返回指向坐标 p 处的项目的指针。 坐标相对于列表小部件的viewport()(QWidget::viewport())。

15、QWidget * itemWidget(QListWidgetItem *item)

void setItemWidget(QListWidgetItem *item, QWidget *widget)

返回给定项目中显示的小部件。/

设置要在给定项目中显示的小部件。此函数应该仅用于在列表小部件项的位置显示静态内容。 如果要显示自定义动态内容或实现自定义编辑器小部件,请改用 QListView 和子类 QStyledItemDelegate。

16、void removeItemWidget(QListWidgetItem *item)

删除在给定项目上设置的小部件。

17、QList<QListWidgetItem *> items(const QMimeData *data)

返回指向包含data的项目的指针列表。

18、void openPersistentEditor(QListWidgetItem *item)

打开给定项目的编辑器。编辑器在编辑后保持打开状态。

19、int row(const QListWidgetItem *item)

返回包含给定item的行。

20、QList<QListWidgetItem *> selectedItems()

返回列表小部件中所有选定项目的列表。

21、void setCurrentItem(QListWidgetItem *item)

将当前项目设置为item。除非选择模式为 NoSelection,否则item也会被选中。

22、void setCurrentItem(QListWidgetItem *item, QItemSelectionModel::SelectionFlags command)

void setCurrentRow(int row, QItemSelectionModel::SelectionFlags command)

设置当前行。

23、void sortItems(Qt::SortOrder order = Qt::AscendingOrder)

根据指定的顺序对列表小部件中的所有项目进行排序。

24、QListWidgetItem * takeItem(int row)

从列表小部件的给定行中删除并返回项目。

从列表小部件中删除的项目不会由 Qt 管理,需要手动删除。

25、QRect visualItemRect(const QListWidgetItem *item)

返回 item 处的 item 占据的视口上的矩形。

【领QT开发教程学习资料,点击下方链接莬费领取↓↓,先码住不迷路~】

点击这里:「链接」


原文链接:https://blog.csdn.net/kenfan1647/article/details/119700732

相关推荐

好用的云函数!后端低代码接口开发,零基础编写API接口

前言在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作。不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人,通过...

快速上手:Windows 平台上 cURL 命令的使用方法

在工作流程中,为了快速验证API接口有效性,团队成员经常转向直接执行cURL命令的方法。这种做法不仅节省时间,而且促进了团队效率的提升。对于使用Windows系统的用户来说,这里有一套详细...

使用 Golang net/http 包:基础入门与实战

简介Go的net/http包是构建HTTP服务的核心库,功能强大且易于使用。它提供了基本的HTTP客户端和服务端支持,可以快速构建RESTAPI、Web应用等服务。本文将介绍ne...

#小白接口# 使用云函数,人人都能编写和发布自己的API接口

你只需编写简单的云函数,就可以实现自己的业务逻辑,发布后就可以生成自己的接口给客户端调用。果创云支持对云函数进行在线接口编程,进入开放平台我的接口-在线接口编程,设计一个新接口,设计和配置好接口参...

极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:iN在之前和大家说过,在iN的家里是没有墙面开关的。...

window使用curl命令的注意事项 curl命令用法

cmd-使用curl命令的注意点前言最近在cmd中使用curl命令来测试restapi,发现有不少问题,这里记录一下。在cmd中使用curl命令的注意事项json不能由单引号包括起来json...

Linux 系统curl命令使用详解 linuxctrl

curl是一个强大的命令行工具,用于在Linux系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,用于下载或上传数据,执行Web请求等。curl命令的常见用法和解...

Tornado 入门:初学者指南 tornados

Tornado是一个功能强大的PythonWeb框架和异步网络库。它最初是为了处理实时Web服务中的数千个同时连接而开发的。它独特的Web服务器和框架功能组合使其成为开发高性能Web...

PHP Curl的简单使用 php curl formdata

本文写给刚入PHP坑不久的新手们,作为工具文档,方便用时查阅。CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到cur...

Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介

本章涵盖使用Actix提供静态网页...

我给 Apache 顶级项目提了个 Bug apache顶级项目有哪些

这篇文章记录了给Apache顶级项目-分库分表中间件ShardingSphere提交Bug的历程。说实话,这是一次比较曲折的Bug跟踪之旅。10月28日,我们在GitHub上提...

linux文件下载、服务器交互(curl)

基础环境curl命令描述...

curl简单使用 curl sh

1.curl--help#查看关键字2.curl-A“(添加user-agent<name>SendUser-Agent<name>toserver)”...

常用linux命令:curl 常用linux命令大全

//获取网页内容//不加任何选项使用curl时,默认会发送GET请求来获取内容到标准输出$curlhttp://www.baidu.com//输出<!DOCTYPEh...

三十七,Web渗透提高班之hack the box在线靶场注册及入门知识

一.注册hacktheboxHackTheBox是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CT...