新闻详情

新闻详情

首页 / 资讯中心 / 详情

NodeGui 中 QAbstractItemViewSelectionBehavior 枚举详解:控制 Item 视图的行、列与项选择行为

发布时间:2026/11/15 15:32:14来源:尧图网络
NodeGui 中 QAbstractItemViewSelectionBehavior 枚举详解:控制 Item 视图的行、列与项选择行为
桌面应用跨平台【免费下载链接】nodeguiA library for building cross-platform native desktop applications with Node.js and CSS . React NodeGui : https://react.nodegui.org and Vue NodeGui: https://vue.nodegui.org项目地址https://gitcode.com/gh_mirrors/no/nodegui点击查看免费下载本文围绕 NodeGui 的 QAbstractItemViewSelectionBehavior 枚举 展开讲解它的三个成员SelectItems、SelectRows、SelectColumns的语义与取值并结合 NodeGui 源码剖析该枚举如何通过setSelectionBehavior/selectionBehavior这对 API 落到原生 Qt 对象上。读完本文你可以直接在QTableView、QListView、QTreeView等 item 视图上正确配置选择粒度并理解它与QTabBar.SelectionBehavior的同名区分、与SelectionMode的配合关系。枚举概览三个成员与取值QAbstractItemViewSelectionBehavior对应 Qt 中QAbstractItemView::selectionBehavior这一标准 API决定的是用户点击 item 视图时一次选中多大范围的区域——是只选中被点击的那一项还是选中整行或整列。官方生成的 API 文档页website/docs/api/generated/enums/qabstractitemviewselectionbehavior.md中列出的成员与取值如下成员数值含义SelectItems0仅选中被点击的单个项默认值SelectRows1点击时选中整行SelectColumns2点击时选中整列这与 NodeGui 源码中枚举的定义完全一致定义位于 QAbstractItemView.ts// QTabBar also has a SelectionBehavior, so we prefix this one. export enum QAbstractItemViewSelectionBehavior { SelectItems 0, SelectRows 1, SelectColumns 2, }需要注意的一点是这里的数值是 NodeGui 侧的 TypeScript 枚举字面量同时也是传给底层 Qt 对象的原始整数值Qt 的QAbstractItemView::SelectionBehavior枚举按相同的顺序定义了SelectItems、SelectRows、SelectColumns因此 NodeGui 可以直接以整数形式透传给原生对象无需额外映射。NodeGui 封装 APIgetter 与 setterNodeGui 在抽象基类QAbstractItemView上成对暴露了这对 API见 QAbstractItemView.ts 与 QAbstractItemView.ts// getter读取当前选择行为 selectionBehavior(): QAbstractItemViewSelectionBehavior { return this.property(selectionBehavior).toInt(); } // setter设置选择行为 setSelectionBehavior(behavior: QAbstractItemViewSelectionBehavior): void { this.setProperty(selectionBehavior, behavior); }从源码结构看这两个方法没有走专用的 C 绑定函数而是复用了 NodeGui 通用的property属性桥接机制selectionBehavior()通过this.property(selectionBehavior)从原生对象上取出 Qt 的同名Q_PROPERTY再toInt()转回数字setSelectionBehavior()通过setProperty(selectionBehavior, behavior)将枚举值作为整数写入原生对象。也就是说该枚举最终落到的是原生QAbstractItemView上的selectionBehavior属性NodeGui 侧只是提供了一层带类型标注的 TS 门面。在src/cpp的绑定目录中检索不到针对该属性的专用包装如setSelectionBehavior_...之类的 C 函数印证了上述通用属性桥的判断。由于QTableView、QListView、QTreeView等具体视图类都继承自QAbstractItemView因此这些 setter/getter 在所有具体视图实例上均可用。用法示例为表格视图配置行选择下面基于 NodeGui 的封装 API 给出一个可复现的最小用法示例模型部分参考了仓库自带示例 modelview_4_headers.ts 中的QAbstractTableModel写法import { ItemDataRole, Orientation, QAbstractTableModel, QAbstractItemViewSelectionBehavior, QModelIndex, QTableView, QVariant, } from nodegui; const tableView new QTableView(); // 默认是 SelectItems逐格选中改为 SelectRows 后点击某格会选中整行 tableView.setSelectionBehavior(QAbstractItemViewSelectionBehavior.SelectRows); const model new MyModel(); tableView.setModel(model); tableView.show(); // 校验当前生效的值应返回 1SelectRows console.log(tableView.selectionBehavior()); class MyModel extends QAbstractTableModel { rowCount(parent new QModelIndex()): number { return 2; } columnCount(parent new QModelIndex()): number { return 3; } data(index: QModelIndex, role ItemDataRole.DisplayRole): QVariant { if (role ItemDataRole.DisplayRole) { return new QVariant(Row${index.row() 1}, Column${index.column() 1}); } return new QVariant(); } }使用要点先设行为再挂模型或之后设置均可selectionBehavior只是视图属性不依赖模型但习惯上在setModel前后把视图行为一次配置好便于阅读selectionBehavior()返回的是枚举数值判断时建议直接与QAbstractItemViewSelectionBehavior.SelectRows比较而不是写死1该枚举的SelectRows在QTableView/QTreeWidget这类行结构视图中最常用SelectColumns则相对少用Qt 官方对SelectColumns的支持在不同视图实现中程度不一实际效果以具体视图类为准在 NodeGui 中具体视图类如 QTableView、QListView 均已导出可直接new使用。为什么枚举名要加 QAbstractItemView 前缀源码在枚举定义处留了一句关键注释QAbstractItemView.ts// QTabBar also has a SelectionBehavior, so we prefix this one.NodeGui 中同时存在两个名字相近的选择行为枚举QAbstractItemViewSelectionBehavior本枚举属于 item 视图族QTableView、QListView等取值0/1/2含义为项/行/列SelectionBehavior无前缀属于 QTabBar.ts取值来自 Qt 的QTabBar::SelectionBehaviorSelectLeftTab 0、SelectRightTab 1、SelectPreviousTab 2见 selectionbehavior.md描述的是删除某个 tab 后应选中左边/右边/上一个 tab与 item 视图的选择粒度毫无关系。为了避免在同一个模块命名空间内发生名字冲突item 视图这一侧才冠以QAbstractItemView前缀。如果你在QTabBar上调用setSelectionBehaviorOnRemove(behavior)QTabBar.ts 附近传入的是后者不要混用这两个枚举。与 SelectionMode 的配合selectionBehavior只决定选中区域的大小并不决定能否多选。多选能力由同文件中的SelectionMode枚举控制QAbstractItemView.ts通过setSelectionMode设置SelectionMode数值说明NoSelection0不允许选择SingleSelection1单选MultiSelection2多选不连续ExtendedSelection3扩展选择Ctrl/Shift 组合ContiguousSelection4连续范围选择两者正交组合才能完整描述交互体验例如支持扩展多选 点一下选中整行应写作tableView.setSelectionBehavior(QAbstractItemViewSelectionBehavior.SelectRows); tableView.setSelectionMode(SelectionMode.ExtendedSelection);当SelectionMode为NoSelection时无论selectionBehavior如何设置视图都不会产生选中区域——排查为什么设置 SelectRows 不生效时可以先确认选择模式没有被禁掉。小结与相关路径速查枚举定义与语义SelectItems 0、SelectRows 1、SelectColumns 2定义于 QAbstractItemView.ts生成文档见 qabstractitemviewselectionbehavior.mdAPI 入口setSelectionBehavior/selectionBehaviorQAbstractItemView.ts、QAbstractItemView.ts底层经通用属性桥写入原生QAbstractItemView的selectionBehavior属性导出位置该枚举随src/index.ts顶层导出见 index.ts在业务代码中直接从包入口import即可易混淆点与 QTabBar.ts 中的SelectionBehaviortab 删除后的选中策略同名不同义注意区分。赞分享桌面应用跨平台【免费下载链接】nodeguiA library for building cross-platform native desktop applications with Node.js and CSS . React NodeGui : https://react.nodegui.org and Vue NodeGui: https://vue.nodegui.org项目地址https://gitcode.com/gh_mirrors/no/nodegui点击查看免费下载相关推荐开源音乐自由革命LX Music桌面版如何重塑你的听觉体验开源音乐自由革命LX Music桌面版如何重塑你的听觉体验 你是否曾为寻找一首心仪的歌曲而辗转于多个音乐平台是否厌倦了付费订阅的束缚渴望一个真正自由、纯粹桌面应用跨平台Flet CardVariant 枚举详解为 Card 控件选择 elevated、filled、outlined 三种 Material 视觉变体Flet CardVariant 枚举详解为 Card 控件选择 elevated、filled、outlined 三种 Material 视觉变体 Flet前端跨平台桌面应用移动开发NodeGui PenStyle 枚举详解QPen 与 QPainter 线条样式的完整用法NodeGui PenStyle 枚举详解QPen 与 QPainter 线条样式的完整用法 在 NodeGui 中使用 QPainter 绘图或调整 QTa桌面应用跨平台上一篇SymPy 矩阵操作完全指南从 Matrix 构造、基本运算到零值测试陷阱下一篇如何5分钟完成Windows和Office永久激活KMS_VL_ALL_AIO智能激活终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/15 4:54:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉