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...
- 一周热门
- 最近发表
-
- 好用的云函数!后端低代码接口开发,零基础编写API接口
- 快速上手:Windows 平台上 cURL 命令的使用方法
- 使用 Golang net/http 包:基础入门与实战
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
- window使用curl命令的注意事项 curl命令用法
- Linux 系统curl命令使用详解 linuxctrl
- Tornado 入门:初学者指南 tornados
- PHP Curl的简单使用 php curl formdata
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- strcat (25)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- element style (30)
- dedecms模版 (53)
- vs打不开 (29)
- nmap (30)
- webgl开发 (24)
- parse (24)
- c 视频教程下载 (33)
- paddleocr (28)
- listview排序 (33)
- firebug 使用 (31)
- transactionmanager (30)
- characterencodingfilter (33)
- getmonth (34)
- commandtimeout (30)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)