新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/9/25 11:37:24来源:尧图网络
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

相关资讯

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

较早相关资讯

最新相关资讯

Agent安全:权限控制与沙箱执行 2026/9/25 20:36:09

Agent安全:权限控制与沙箱执行

Agent安全:权限控制与沙箱执行 专栏:AI/LLM工程化实战 - 从Prompt到Agent的完整落地指南 模块4 Agent工程实战篇 第42篇 摘要 摘要:Agent权限最小化、工具白名单、代码沙箱subprocess受限执行、敏感数据脱敏、审计日志,是Agent安全防护的五大核心手段。用可运行Python实现一道工…

阅读更多 →
「Python 翻车日记 · 第 12 篇」一行 read() 读 5GB,电脑就炸了?——文件是流,不是一坨 2026/9/25 20:36:02

「Python 翻车日记 · 第 12 篇」一行 read() 读 5GB,电脑就炸了?——文件是流,不是一坨

Python 翻车日记 第 12 篇:一行 read() 读 5GB,电脑就炸了?——文件是流,不是一坨 📋 本期菜单:6 个文件 I/O 的坑 + 1 个模式速查,从「read OOM」到「JSON 中文转义」 [入门] read OOM with 句柄泄漏 glob 不递归 二进制写 str [进阶] os.path.join 绝对路径丢弃 …

阅读更多 →
K值新国标落地!2026选门窗不看这个参数,冬天多交一半暖气费 2026/9/25 20:36:02

K值新国标落地!2026选门窗不看这个参数,冬天多交一半暖气费

最近不少准备装修的朋友发现,去门店选窗户,销售都在提一个参数——K值。有的说是2.0,有的说是1.5,还有的说是1.1。这到底是个啥?新国标实施后,K值不达标会有什么后果?今天一篇讲清楚。K值到底是…

阅读更多 →
Agent框架对比:LangGraph、LlamaIndex、AutoGen三选一 2026/9/25 20:35:55

Agent框架对比:LangGraph、LlamaIndex、AutoGen三选一

Agent框架对比:LangGraph、LlamaIndex、AutoGen三选一 专栏:AI/LLM工程化实战 - 从Prompt到Agent的完整落地指南 模块4 Agent工程实战篇 第41篇 摘要 摘要:Agent框架选型、LangGraph有向图状态机、LlamaIndex数据编排、AutoGen多角色会话,是三大主流Agent框架的架构核心。用可运…

阅读更多 →
从Activity Log生成周报:工作事件模型、聚合规则与事实边界 2026/9/25 20:35:55

从Activity Log生成周报:工作事件模型、聚合规则与事实边界

自动生成周报的可靠路径,不是让模型扫描所有聊天并自由总结,而是先建立轻量 Activity Log:用结构化工作事件记录结果、决定、阻塞、行动和来源,再按项目与时间聚合,最后由模型负责表达压缩。 工作事件模型 type WorkEv…

阅读更多 →
【含视频】官方WorkBuddy应用师认证教程03 职 场 实 战 应 用 2026/9/25 20:35:28

【含视频】官方WorkBuddy应用师认证教程03 职 场 实 战 应 用

视频教程: WorkBuddy应用师认证教程03职场实战应用01读:让 AI 帮你消化信息-CSDN直播 WorkBuddy应用师认证教程03职场实战应用02写:让 AI 帮你生成内容-CSDN直播 待完善,还有一集 第 三 章 职 场 实 战 应 用 从日常办公、长…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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