当前位置: 首页 > news >正文

QT视图界面

先一句话说清楚:Qt 里没有直接叫 QView 的类,所有“视图”都继承自 QAbstractItemView,常用的有 4 种标准 View,外加对应的“便捷 Widget”。下面直接给你面试版总结 + 代码小例子。
一、四大标准 View(Model/View 架构)

都在 #include <QXXXView>,数据和界面分离,可以共用 Model。

1. QListView —— 列表/图标视图
一维数据:单列列表、图标列表。
典型:文件列表、联系人列表。
2. QTableView —— 表格视图
二维数据:行+列,像 Excel。
典型:数据库查询结果、表格数据。
3. QTreeView —— 树形视图
层级/树状数据,可折叠展开。
典型:文件系统、目录树、层级菜单。
4. QColumnView —— 多列级联视图
像 Mac Finder 那种,每级一列。
典型:多级目录选择。
关系一句话

• 基类:QAbstractItemView

• 四大子类:QListView / QTableView / QTreeView / QColumnView

• 配套:Model(数据)+ Delegate(渲染/编辑)
二、对应的“便捷 Widget”(不分离 Model/View)

新手常混,面试最好区分:

• QListView → QListWidget

• QTableView → QTableWidget

• QTreeView → QTreeWidget

特点:

• 内部自带 Model,不用自己写 Model,直接 addItem。

• 缺点:不能共享 Model、灵活性差。
三、极简代码示例(面试可写)

1)QListView + QStringListModel(标准用法)
QListView *listView = new QListView(this);
QStringListModel *model = new QStringListModel(this);
model->setStringList({"Apple","Banana","Cherry"});
listView->setModel(model);
2)QTableView + QStandardItemModel
QTableView *tableView = new QTableView(this);
QStandardItemModel *model = new QStandardItemModel(2,2,this);
model->setItem(0,0,new QStandardItem("Name"));
model->setItem(0,1,new QStandardItem("Age"));
tableView->setModel(model);
3)QTreeView + QStandardItemModel
QTreeView *treeView = new QTreeView(this);
QStandardItemModel *model = new QStandardItemModel(this);
QStandardItem *root = model->invisibleRootItem();
QStandardItem *node = new QStandardItem("Folder");
node->appendRow(new QStandardItem("file.txt"));
root->appendRow(node);
treeView->setModel(model);
四、面试一句话总结(背这个)

Qt 的 View 都继承自 QAbstractItemView,常用有 QListView、QTableView、QTreeView、QColumnView;它们遵循 Model/View 架构,数据和界面分离,可共享 Model。另外还有便捷类 QListWidget/QTableWidget/QTreeWidget,内部自带 Model,适合简单场景。
要不要我给你画一张“View → 便捷Widget → 适用场景”的速记表,面试前看一眼就记住?

http://www.jsqmd.com/news/826463/

相关文章:

  • 从AMBA 2.0到AMBA 5:老司机带你回顾总线协议演进,聊聊CHI和ACE那些事
  • 【架构实战】百万级Excel数据导入的“坑”与“填坑”指南(上):痛点剖析与破局利器 EasyExcel
  • 基于RAG与LLM的法律合规助手:架构、实现与工程实践
  • 在 Ubuntu Core 上部署 Go Web 服务的完整指南
  • 告别理论!用DPDK+OVS实现虚拟化网络性能翻倍:一个云原生场景下的实战优化记录
  • LangM:轻量化本地大模型推理框架部署与调优实战
  • 对抗性攻击与防御实战:从FGSM到对抗训练的AI模型安全指南
  • LaTeX-PPT:3分钟学会在PowerPoint中快速插入专业数学公式的终极指南
  • Coze(扣子)工作流使用攻略 操作指南(2026最新版)
  • 别再只盯着数字了!GeoDa空间自相关分析:从莫兰指数、p值到z值的保姆级解读指南
  • 开源破产法律实务知识库:构建结构化办案指南与协作平台
  • 从零搭建Kepserver与SQL Server的数据桥梁:Data Logger实战指南
  • 别再只把Celery当队列了!手把手教你配置Beat实现Redis数据定时备份到MySQL
  • CLI脚手架工具discli:自动化项目初始化与团队开发规范管理
  • 别再手动改代码了!用C++ Builder/Visual Studio属性面板快速搞定Win32窗体按钮和边框
  • Spring Boot + JStachio 高性能编译时模板引擎
  • Unity预制体(Prefab)核心应用指南:从概念到实战实例化
  • 基于Arduino与传感器实现交互式声音生成:从原理到实战
  • 告别轴映射!UE5.1增强输入系统保姆级入门:从Input Action到Input Modifier实战
  • ARM ETMv4跟踪寄存器架构与调试实践
  • Ultimaker Cura:3D打印新手快速上手的终极切片软件完整教程
  • RunawayContext:大语言模型复杂任务分解与上下文管理框架解析
  • AI编程也开始“贵价提速”?Cursor上线Opus极速模式,官方却劝你:别开,真不值!
  • 有哪些实用的 Git 操作菜谱(recipes)推荐?
  • 2026 年 7 套仓储专用库存管理系统推荐
  • 从图形学小白到入门:手把手用Python实现点积和叉积,并可视化它们的几何意义
  • 别再死记硬背了!用大白话+生活例子,5分钟搞懂Cache映射(全相联/直接/组相连)
  • Linux IIO传感器驱动开发实战:从框架原理到SPI驱动实现
  • Adobe-GenP 3.0:二进制补丁技术的深度解析与完整教程
  • 基于视觉大模型的GUI自动化:从原理到实践