Qt C++表格控件实现Excel文件读写与编辑的完整方案
这次我们来看一个实用的 Qt C 项目——使用表格控件处理 Excel 文件。如果你需要在桌面应用中集成 Excel 文件的读写、编辑和展示功能这个方案可以直接拿来用。Qt 的表格控件 QTableWidget 和 QTableView 提供了强大的二维数据展示能力结合 Excel 文件解析库可以实现从 Excel 导入数据、在界面中编辑、再导出回 Excel 的完整流程。这个方案特别适合需要离线处理表格数据的场景比如数据录入系统、报表工具、配置管理界面等。核心优势在于本地化部署不依赖 Office 软件支持跨平台运行而且性能比用 Python 读取 Excel 更快——特别是处理大文件时C 的解析效率优势明显。下面会重点讲怎么配置环境、怎么用代码实现读写、怎么处理常见格式问题以及如何优化大文件加载速度。1. 核心能力速览能力项说明支持格式.xlsx、.xls需依赖库支持核心控件QTableWidget、QTableView QStandardItemModel依赖库QtXlsx、libxlsxwriter、OpenXLSX 等任选其一系统要求Windows/Linux/macOSQt 5.12 或更高版本内存占用根据文件大小动态变化百兆级文件通常在 200MB~1GB启动方式直接编译运行或集成到现有 Qt 项目接口能力提供文件加载、数据获取、单元格编辑、导出保存等方法批量任务支持多文件顺序处理可通过队列机制实现适合场景数据采集工具、报表生成器、配置编辑界面、离线数据分析2. 适用场景与使用边界这个方案最适合需要将 Excel 作为数据交换格式的桌面应用。比如企业内部的数据录入系统用户上传 Excel 模板程序解析后展示在表格中编辑完再导出或者是需要将数据库查询结果导出为 Excel 报表的工具。但它不适合需要复杂 Excel 公式计算、图表生成、条件格式等高级功能的场景——这些最好用 Excel 原生软件或专业报表组件。另外如果只是简单读取几行数据用 CSV 格式会更轻量但如果要保持单元格样式、多工作表、合并单元格等结构还是需要完整的 Excel 解析库。使用时要特别注意文件编码和格式兼容性。xlsx 是较新的格式推荐优先使用xls 是旧格式部分库可能支持不完整。涉及商业数据时要确保有合法的文件使用授权。3. 环境准备与前置条件操作系统Windows 10/11、Ubuntu 18.04、macOS 10.14 均可。Qt 的跨平台特性保证了一套代码多端运行。Qt 版本至少 Qt 5.12推荐 Qt 5.15 或 Qt 6.2。新版本对 C17 特性和第三方库兼容更好。编译器Windows: MinGW 7.3 或 MSVC 2017Linux: GCC 7macOS: Clang 10第三方库选型三选一即可QtXlsx基于 Qt 的 xlsx 读写库API 最接近 Qt 风格适合初学者libxlsxwriter纯 C 库专注写入体积小适合导出场景OpenXLSXC17 实现性能较好支持读写修改磁盘空间除了 Qt 安装所需空间建议预留 500MB 用于存放示例文件、生成临时文件。4. 安装部署与启动方式以 QtXlsx 为例演示如何集成到 Qt 项目中。第一步下载 QtXlsx 源码git clone https://github.com/dbzhang800/QtXlsxWriter.git cd QtXlsxWriter第二步编译为静态库或动态库在 Qt Creator 中打开 QtXlsxWriter.pro选择与主项目相同的编译套件构建即可。会生成 libQtXlsx.aLinux/macOS或 QtXlsx.libWindows。第三步在主项目中配置在项目的 .pro 文件中添加# 指定头文件路径 INCLUDEPATH /path/to/QtXlsxWriter/include # 链接库文件Windows 示例 LIBS -L/path/to/QtXlsxWriter/lib -lQtXlsx # 如果编译为静态库还需要链接 zlib LIBS -lz第四步基本代码结构创建主窗口类包含表格控件和操作按钮// mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include QMainWindow #include QTableWidget #include QPushButton #include QVBoxLayout class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent nullptr); ~MainWindow(); private slots: void loadExcel(); void saveExcel(); private: QTableWidget *tableWidget; QPushButton *loadBtn; QPushButton *saveBtn; }; #endif // MAINWINDOW_H5. 功能测试与效果验证5.1 Excel 文件读取测试测试目的验证能否正确解析 Excel 文件内容并显示在表格中。输入素材准备一个包含以下内容的 test.xlsx第一行标题姓名、年龄、城市后续行3-5 条测试数据包含合并单元格、数字、文本等不同类型数据操作步骤// mainwindow.cpp #include mainwindow.h #include QtXlsx/xlsxdocument.h MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { // 初始化界面 QWidget *centralWidget new QWidget(this); QVBoxLayout *layout new QVBoxLayout(centralWidget); tableWidget new QTableWidget(this); loadBtn new QPushButton(加载 Excel, this); saveBtn new QPushButton(保存 Excel, this); layout-addWidget(loadBtn); layout-addWidget(saveBtn); layout-addWidget(tableWidget); setCentralWidget(centralWidget); connect(loadBtn, QPushButton::clicked, this, MainWindow::loadExcel); connect(saveBtn, QPushButton::clicked, this, MainWindow::saveExcel); } void MainWindow::loadExcel() { QString filePath QFileDialog::getOpenFileName(this, 选择 Excel 文件, , Excel Files (*.xlsx *.xls)); if (filePath.isEmpty()) return; QXlsx::Document xlsx(filePath); if (!xlsx.load()) { QMessageBox::warning(this, 错误, 文件加载失败); return; } // 获取第一个工作表 QXlsx::Worksheet *workSheet xlsx.currentWorksheet(); if (!workSheet) { QMessageBox::warning(this, 错误, 未找到工作表); return; } // 获取数据范围 int rowCount workSheet-dimension().rowCount(); int colCount workSheet-dimension().columnCount(); // 设置表格行列数 tableWidget-setRowCount(rowCount); tableWidget-setColumnCount(colCount); // 读取数据 for (int row 1; row rowCount; row) { for (int col 1; col colCount; col) { QXlsx::Cell *cell workSheet-cellAt(row, col); if (cell) { QTableWidgetItem *item new QTableWidgetItem(cell-value().toString()); tableWidget-setItem(row-1, col-1, item); } } } QMessageBox::information(this, 成功, QString(加载完成共 %1 行 %2 列).arg(rowCount).arg(colCount)); }预期结果表格正确显示 Excel 文件内容行列数与原文件一致数据类型保持正确。判断成功界面显示的数据与 Excel 文件中完全一致包括合并单元格的显示。5.2 表格编辑功能测试测试目的验证用户能否在表格中编辑数据。操作步骤加载 Excel 文件后双击任意单元格进行编辑修改几个单元格的值添加新行或删除现有行代码支持// 启用编辑功能默认就是启用的 tableWidget-setEditTriggers(QAbstractItemView::DoubleClicked | QAbstractItemView::EditKeyPressed); // 支持行操作 tableWidget-setContextMenuPolicy(Qt::ActionsContextMenu); // 添加右键菜单 QAction *addRowAction new QAction(插入行, this); QAction *delRowAction new QAction(删除行, this); tableWidget-addAction(addRowAction); tableWidget-addAction(delRowAction); connect(addRowAction, QAction::triggered, [this]() { int currentRow tableWidget-currentRow(); tableWidget-insertRow(currentRow 0 ? currentRow : tableWidget-rowCount()); }); connect(delRowAction, QAction::triggered, [this]() { int currentRow tableWidget-currentRow(); if (currentRow 0) { tableWidget-removeRow(currentRow); } });预期结果用户可以自由编辑单元格内容插入删除行操作正常。5.3 Excel 文件保存测试测试目的验证能将表格数据正确导出为 Excel 文件。操作步骤void MainWindow::saveExcel() { QString filePath QFileDialog::getSaveFileName(this, 保存 Excel 文件, , Excel Files (*.xlsx)); if (filePath.isEmpty()) return; QXlsx::Document xlsx; int rowCount tableWidget-rowCount(); int colCount tableWidget-columnCount(); // 写入数据 for (int row 0; row rowCount; row) { for (int col 0; col colCount; col) { QTableWidgetItem *item tableWidget-item(row, col); if (item) { xlsx.write(row1, col1, item-text()); } } } if (xlsx.saveAs(filePath)) { QMessageBox::information(this, 成功, 文件保存成功); } else { QMessageBox::warning(this, 错误, 文件保存失败); } }预期结果生成的 Excel 文件能用 Office 或 WPS 正常打开内容与表格显示一致。6. 接口 API 与批量任务虽然这是桌面应用但可以设计成支持批量处理模式。6.1 批量转换功能场景需要将多个 Excel 文件转换为 CSV或者批量提取特定数据。实现思路class BatchProcessor : public QObject { Q_OBJECT public: void processFolder(const QString inputDir, const QString outputDir) { QDir dir(inputDir); QStringList excelFiles dir.entryList({*.xlsx, *.xls}, QDir::Files); for (const QString fileName : excelFiles) { QString inputPath dir.filePath(fileName); QString outputPath QDir(outputDir).filePath(QFileInfo(fileName).baseName() .csv); if (convertExcelToCsv(inputPath, outputPath)) { emit progressChanged(fileName, true); } else { emit progressChanged(fileName, false); } QThread::msleep(100); // 避免过于密集的IO操作 } } signals: void progressChanged(const QString fileName, bool success); private: bool convertExcelToCsv(const QString excelPath, const QString csvPath) { QXlsx::Document xlsx(excelPath); if (!xlsx.load()) return false; QFile csvFile(csvPath); if (!csvFile.open(QIODevice::WriteOnly | QIODevice::Text)) return false; QTextStream stream(csvFile); int rowCount xlsx.dimension().rowCount(); int colCount xlsx.dimension().columnCount(); for (int row 1; row rowCount; row) { QStringList rowData; for (int col 1; col colCount; col) { rowData xlsx.read(row, col).toString(); } stream rowData.join(,) \n; } csvFile.close(); return true; } };6.2 数据提取 API可以为其他模块提供数据访问接口class ExcelDataProvider : public QObject { Q_OBJECT public: explicit ExcelDataProvider(QTableWidget *table) : m_table(table) {} QVariant getCellData(int row, int col) const { QTableWidgetItem *item m_table-item(row, col); return item ? item-text() : QVariant(); } QListQStringList getAllData() const { QListQStringList result; for (int row 0; row m_table-rowCount(); row) { QStringList rowData; for (int col 0; col m_table-columnCount(); col) { rowData getCellData(row, col).toString(); } result.append(rowData); } return result; } bool findText(const QString text, QListQPoint results) const { results.clear(); for (int row 0; row m_table-rowCount(); row) { for (int col 0; col m_table-columnCount(); col) { if (getCellData(row, col).toString().contains(text)) { results.append(QPoint(col, row)); } } } return !results.isEmpty(); } private: QTableWidget *m_table; };7. 资源占用与性能观察7.1 内存占用优化处理大文件时需要注意内存管理// 分批读取大文件 void loadLargeExcel(const QString filePath, int batchSize 1000) { QXlsx::Document xlsx(filePath); if (!xlsx.load()) return; int totalRows xlsx.dimension().rowCount(); tableWidget-setRowCount(0); // 清空表格 for (int startRow 1; startRow totalRows; startRow batchSize) { int endRow qMin(startRow batchSize - 1, totalRows); // 显示加载进度 emit progressUpdated(startRow, totalRows); // 分批读取数据 for (int row startRow; row endRow; row) { int tableRow tableWidget-rowCount(); tableWidget-insertRow(tableRow); for (int col 1; col xlsx.dimension().columnCount(); col) { QTableWidgetItem *item new QTableWidgetItem(xlsx.read(row, col).toString()); tableWidget-setItem(tableRow, col-1, item); } } // 处理UI事件避免界面卡死 QApplication::processEvents(); } }7.2 性能监控添加性能统计代码#include QElapsedTimer void MainWindow::loadExcel() { QElapsedTimer timer; timer.start(); // ... 原有的加载代码 ... qint64 elapsed timer.elapsed(); qDebug() 文件加载耗时: elapsed 毫秒; qDebug() 内存占用: getMemoryUsage() MB; } qint64 MainWindow::getMemoryUsage() { #ifdef Q_OS_WIN PROCESS_MEMORY_COUNTERS pmc; if (GetProcessMemoryInfo(GetCurrentProcess(), pmc, sizeof(pmc))) { return pmc.WorkingSetSize / 1024 / 1024; // MB } #elif defined(Q_OS_LINUX) QFile file(/proc/self/status); if (file.open(QIODevice::ReadOnly)) { while (!file.atEnd()) { QByteArray line file.readLine(); if (line.startsWith(VmRSS:)) { QListQByteArray parts line.split( ); return parts[parts.size()-2].toLong() / 1024; // MB } } } #endif return 0; }8. 常见问题与排查方法问题现象可能原因排查方式解决方案编译错误找不到 QtXlsx 头文件头文件路径配置错误检查 .pro 文件中的 INCLUDEPATH使用绝对路径或相对路径正确指向 include 目录运行时崩溃加载 Excel 失败文件被占用或格式不支持检查文件是否能被 Excel 正常打开确保文件未被其他程序占用尝试另存为新 xlsx 格式中文显示乱码文件编码问题检查 Excel 文件保存的编码格式保存时选择 UTF-8 编码或使用 QTextCodec 进行转换大文件加载缓慢一次性读取全部数据监控内存占用和加载进度实现分批读取添加加载进度提示合并单元格显示异常未处理合并单元格信息检查 QXlsx 是否支持合并单元格读取使用 worksheet-mergedCells() 获取合并信息并特殊处理保存后公式丢失库不支持公式保持测试简单公式的保存效果如需要公式支持考虑使用专业商业库在 Linux 下无法打开 xls旧格式支持需要额外依赖检查库的格式支持列表优先使用 xlsx 格式或安装 libxls 支持8.1 编码问题专项处理Excel 文件编码问题很常见特别是涉及中文时QString decodeExcelText(const QVariant value) { QString text value.toString(); // 检测并转换常见的编码问题 if (text.contains(Ã) || text.contains(Â)) { // 可能是 Latin1 被误读为 UTF-8 QTextCodec *codec QTextCodec::codecForName(Latin1); if (codec) { return codec-toUnicode(text.toLatin1()); } } return text; } // 在读取单元格时使用 QXlsx::Cell *cell workSheet-cellAt(row, col); if (cell) { QString cellText decodeExcelText(cell-value()); QTableWidgetItem *item new QTableWidgetItem(cellText); tableWidget-setItem(row-1, col-1, item); }8.2 内存泄漏排查Qt 项目常见的内存问题// 在析构函数中清理资源 MainWindow::~MainWindow() { // 手动删除大量表格项时先禁用更新以提高性能 tableWidget-setUpdatesEnabled(false); // 清空表格内容 tableWidget-clearContents(); tableWidget-setRowCount(0); tableWidget-setColumnCount(0); tableWidget-setUpdatesEnabled(true); } // 使用智能指针管理动态创建的项目 void safeSetTableItem(int row, int col, const QString text) { // 先删除现有项目 QTableWidgetItem *oldItem tableWidget-item(row, col); if (oldItem) { tableWidget-takeItem(row, col); delete oldItem; } // 创建新项目 QTableWidgetItem *newItem new QTableWidgetItem(text); tableWidget-setItem(row, col, newItem); }9. 最佳实践与使用建议9.1 文件格式处理优先使用 xlsx 格式xlsx 基于 XML兼容性更好而且大多数开源库对 xlsx 的支持更完善。大文件分块处理超过 10MB 的 Excel 文件建议实现分批加载机制避免界面卡顿。备份机制保存文件前先备份原文件特别是处理重要数据时。bool backupFile(const QString filePath) { if (!QFile::exists(filePath)) return true; QFileInfo fileInfo(filePath); QString backupPath fileInfo.path() / fileInfo.baseName() _backup_ QDateTime::currentDateTime().toString(yyyyMMdd_hhmmss) . fileInfo.suffix(); return QFile::copy(filePath, backupPath); }9.2 用户体验优化添加加载进度提示class ProgressDialog : public QProgressDialog { public: ProgressDialog(const QString labelText, QWidget *parent nullptr) : QProgressDialog(labelText, 取消, 0, 100, parent) { setWindowModality(Qt::WindowModal); setMinimumDuration(0); } void updateProgress(int value, int maximum) { setMaximum(maximum); setValue(value); if (value maximum) { hide(); } } }; // 在加载大文件时使用 ProgressDialog progress(加载Excel文件..., this); progress.show(); for (int row 1; row totalRows; row) { // ... 加载逻辑 ... progress.updateProgress(row, totalRows); if (progress.wasCanceled()) { break; } }支持拖拽打开// 在主窗口构造函数中启用拖拽 setAcceptDrops(true); void MainWindow::dragEnterEvent(QDragEnterEvent *event) { if (event-mimeData()-hasUrls()) { event-acceptProposedAction(); } } void MainWindow::dropEvent(QDropEvent *event) { const QMimeData *mimeData event-mimeData(); if (mimeData-hasUrls()) { QUrl url mimeData-urls().first(); if (url.isLocalFile()) { QString filePath url.toLocalFile(); if (filePath.endsWith(.xlsx) || filePath.endsWith(.xls)) { loadExcelFile(filePath); } } } }9.3 数据验证与安全文件类型验证bool isValidExcelFile(const QString filePath) { QFile file(filePath); if (!file.open(QIODevice::ReadOnly)) return false; QByteArray header file.read(8); file.close(); // xlsx 文件头PK 头ZIP格式 if (header.startsWith(PK\x03\x04)) return true; // xls 文件头D0 CF 11 E0 A1 B1 1A E1 if (header.startsWith(\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1)) return true; return false; }数据完整性检查QString validateTableData() { int emptyCells 0; int totalCells tableWidget-rowCount() * tableWidget-columnCount(); for (int row 0; row tableWidget-rowCount(); row) { for (int col 0; col tableWidget-columnCount(); col) { QTableWidgetItem *item tableWidget-item(row, col); if (!item || item-text().trimmed().isEmpty()) { emptyCells; } } } if (emptyCells totalCells * 0.8) { return 数据完整性警告超过80%的单元格为空; } return 数据验证通过; }这个 Qt C Excel 表格控件方案最大的价值在于将复杂的 Excel 文件操作封装成了简单的界面交互特别适合需要集成表格处理能力的桌面应用。第一次部署时重点测试文件格式兼容性和中文编码问题这两个是最容易踩坑的地方。实际项目中建议先实现基础的文件读写功能再根据具体需求添加数据验证、批量处理、进度提示等高级特性。对于性能要求极高的场景可以考虑使用多线程处理将文件解析放在后台线程避免界面卡顿。

相关新闻

爱采购运营以数据说话,李冬玭推动安防店铺持续增长--一网推

爱采购运营以数据说话,李冬玭推动安防店铺持续增长--一网推

专业的百度爱采购运营,必须以真实数据为核心依据,拒绝盲目优化、主观运营。一网推百度爱采购金牌讲师李冬玭始终坚持数据驱动运营的核心理念,通过全方位数据监测、数据分析、数据优化,持续推动济宁华冠安全设备安防店铺流量、排名…

2026/8/1 7:37:02 阅读更多 →
如何高效使用G-Helper:华硕笔记本的终极轻量控制解决方案

如何高效使用G-Helper:华硕笔记本的终极轻量控制解决方案

如何高效使用G-Helper:华硕笔记本的终极轻量控制解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook,…

2026/8/1 7:37:02 阅读更多 →
实战指南:5步完成Axure RP 9/10/11中文界面完美汉化

实战指南:5步完成Axure RP 9/10/11中文界面完美汉化

实战指南:5步完成Axure RP 9/10/11中文界面完美汉化 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn Axure RP中文语言…

2026/8/1 7:37:02 阅读更多 →

最新新闻

51单片机定时器/计数器原理、配置与实战应用详解

51单片机定时器/计数器原理、配置与实战应用详解

1. 项目概述:为什么51单片机的定时器/计数器是核心基本功? 如果你刚开始玩51单片机,可能会觉得写个LED闪烁、数码管显示就是入门了。但当你真正想做个电子钟、频率计,或者让两个设备按精确时间通信时,立马就会撞上一堵…

2026/8/1 9:13:26 阅读更多 →
突破性安卓投屏方案:QtScrcpy无根权限下的高效跨设备控制

突破性安卓投屏方案:QtScrcpy无根权限下的高效跨设备控制

突破性安卓投屏方案:QtScrcpy无根权限下的高效跨设备控制 【免费下载链接】QtScrcpy Android real-time display control software 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy 在移动设备管理日益复杂的今天,技术爱好者和企业用…

2026/8/1 9:13:26 阅读更多 →
隔离放大器:赋能现代科技产品精准稳定运行的核心信号器件

隔离放大器:赋能现代科技产品精准稳定运行的核心信号器件

在科技快速迭代的当下,各类科技产品正朝着高精度、智能化、多功能方向稳步前行,小到日常使用的智能终端,大到工业控制设备、医疗仪器,乃至高端的新能源装备、航空航天器件,其稳定运转都离不开精准的信号采集与高效传输…

2026/8/1 9:13:26 阅读更多 →
FPGA时序优化利器:IODELAY原理、配置与动态相位对齐实战

FPGA时序优化利器:IODELAY原理、配置与动态相位对齐实战

1. 项目概述:从“玄学”到“科学”的时序调优利器 在高速数字电路设计,尤其是FPGA与复杂ASIC的前后端工作中,信号完整性(SI)和时序收敛是工程师们永恒的课题。你是否遇到过这样的场景:板级调试时&#xff0…

2026/8/1 9:13:26 阅读更多 →
G-Helper完全指南:华硕笔记本轻量级控制工具的5个高效使用技巧

G-Helper完全指南:华硕笔记本轻量级控制工具的5个高效使用技巧

G-Helper完全指南:华硕笔记本轻量级控制工具的5个高效使用技巧 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zen…

2026/8/1 9:13:25 阅读更多 →
2026年豆包GEO优化服务商推荐:自研监测技术赋能AI品牌曝光

2026年豆包GEO优化服务商推荐:自研监测技术赋能AI品牌曝光

2026年,AI搜索已从概念走向日常。据行业数据,国内GEO市场规模已突破30亿元人民币,在三年内实现35倍爆发式增长。豆包全域用户规模持续走高,平台日均问答交互体量庞大。当用户获取信息的习惯从关键词检索转向AI问答,品牌…

2026/8/1 9:12:25 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →