青海微网站建设/网络营销有哪些推广方法

青海微网站建设,网络营销有哪些推广方法,怎么做wap网站,内蒙古两学一做网站使用Qt开发一个按发票样式显示的XML发票浏览器,如下图所示样式: 一、需求: 1、按税务发票样式显示。 2、拖入即可显示。 3、正确解析xml文件。 二、实现 可以按照以下步骤进行: 1. 创建Qt项目 打开Qt Creator,创…

使用Qt开发一个按发票样式显示的XML发票浏览器,如下图所示样式:

一、需求:

1、按税务发票样式显示。

2、拖入即可显示。

3、正确解析xml文件。

二、实现

可以按照以下步骤进行:

1. 创建Qt项目

  • 打开Qt Creator,创建一个新的Qt Widgets Application项目。

  • 设置项目名称和路径,选择合适的Qt版本。

2. 导入必要的模块

在项目的.pro文件中,确保导入了xml模块,以便使用Qt的XML解析功能:

pro复制

QT += core gui widgets xml

3. 设计UI界面

  • 使用Qt Designer设计发票浏览器的UI界面。可以添加一个QTextBrowserQTextEdit控件用于显示发票内容,还可以添加一些按钮用于加载和解析XML文件。

  • 保存UI文件并生成对应的.h.cpp文件。

4. 加载和解析XML文件

Qt提供了多种方式来解析XML文件,常用的有QDomDocumentQXmlStreamReader。也可以使用python来解析,参考文章。《如何用Python编程实现自动整理XML发票文件_python解析xml发票-CSDN博客》

5. 显示发票内容

将解析出的发票内容格式化后显示在QTextBrowserQTextEdit控件中。可以使用HTML格式来实现发票的样式显示。或者使用QWidget和QTableWidget、QFormLayout、QVBoxLayout等进行界面布局。

cpp复制

#include <QTextBrowser>
#include <QTextStream>void displayInvoice(QTextBrowser *browser, const QDomDocument &doc) {QDomElement root = doc.documentElement();QDomNodeList items = root.elementsByTagName("item");QString html;QTextStream stream(&html);stream << "<html><body>";stream << "<h1>发票内容</h1>";stream << "<table border='1'>";stream << "<tr><th>名称</th><th>金额</th></tr>";for (int i = 0; i < items.size(); ++i) {QDomElement item = items.at(i).toElement();QString name = item.firstChildElement("name").text();QString amount = item.firstChildElement("amount").text();stream << "<tr><td>" << name << "</td><td>" << amount << "</td></tr>";}stream << "</table>";stream << "</body></html>";browser->setHtml(html);
}

6. 整合功能

在主窗口类中,将加载、解析和显示功能整合起来。例如,可以为按钮添加槽函数来触发这些操作。

cpp复制

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->loadButton, &QPushButton::clicked, this, &MainWindow::onLoadClicked);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::onLoadClicked() {QString filePath = QFileDialog::getOpenFileName(this, "选择XML文件", "", "XML文件 (*.xml)");if (!filePath.isEmpty()) {QDomDocument doc;QFile file(filePath);if (file.open(QIODevice::ReadOnly)) {if (doc.setContent(&file)) {displayInvoice(ui->textBrowser, doc);} else {QMessageBox::critical(this, "错误", "无法解析XML文件");}file.close();} else {QMessageBox::critical(this, "错误", "无法打开文件");}}
}

7. 支持拖入

要支持拖入文件的功能,可以通过为窗口启用拖放功能来实现。在Qt中,可以通过设置窗口的dragEnterEventdragMoveEventdropEvent等事件来处理拖放操作。

以下是实现拖入文件功能的详细步骤:

7.1. 启用窗口的拖放功能

在窗口类的构造函数中,启用拖放功能并设置接受拖放的文件类型。

cpp复制

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 启用拖放功能setAcceptDrops(true);connect(ui->loadButton, &QPushButton::clicked, this, &MainWindow::onLoadClicked);
}

7.2. 重写拖放事件处理函数

重写dragEnterEventdragMoveEventdropEvent函数来处理拖放操作。

dragEnterEvent

当文件被拖入窗口时,此事件被触发。可以在这里检查拖入的文件是否符合要求(例如是否是XML文件)。

cpp复制

void MainWindow::dragEnterEvent(QDragEnterEvent *event) {if (event->mimeData()->hasUrls()) {event->acceptProposedAction(); // 接受拖放操作} else {event->ignore(); // 忽略其他类型的拖放操作}
}
dragMoveEvent

当文件在窗口内移动时,此事件被触发。可以在这里提供视觉反馈,例如高亮显示可放置区域。

cpp复制

void MainWindow::dragMoveEvent(QDragMoveEvent *event) {if (event->mimeData()->hasUrls()) {event->acceptProposedAction();} else {event->ignore();}
}
dropEvent

当文件被释放(放下)时,此事件被触发。可以在这里获取文件路径并处理文件。

cpp复制

void MainWindow::dropEvent(QDropEvent *event) {if (event->mimeData()->hasUrls()) {QList<QUrl> urls = event->mimeData()->urls();if (!urls.isEmpty()) {QString filePath = urls.first().toLocalFile(); // 获取第一个文件的路径if (!filePath.isEmpty()) {loadInvoice(filePath); // 调用加载发票的函数}}}event->acceptProposedAction();
}

7.3. 加载和显示发票内容

loadInvoice函数中,解析XML文件并显示发票内容。这里可以复用前面提到的解析和显示代码。

cpp复制

void MainWindow::loadInvoice(const QString &filePath) {QDomDocument doc;QFile file(filePath);if (file.open(QIODevice::ReadOnly)) {if (doc.setContent(&file)) {displayInvoice(ui->textBrowser, doc); // 显示发票内容} else {QMessageBox::critical(this, "错误", "无法解析XML文件");}file.close();} else {QMessageBox::critical(this, "错误", "无法打开文件");}
}

三. 编译和运行

  • 编译项目并运行。

  • 使用“加载”按钮选择一个XML发票文件,程序将解析并按样式显示发票内容。

  • 将XML文件拖入窗口,程序将解析并按样式显示发票内容。

  • 通过以上步骤,

通过以上步骤,你可以开发一个简单的XML发票浏览器,按发票样式显示内容。你的发票浏览器不仅可以通过按钮加载文件,还可以支持拖入文件的功能。根据实际需求,还可以进一步优化UI界面和功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/69899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++TinML转html

cTinML转html 前言解析解释转译html类定义开头html 结果这是最终效果&#xff08;部分&#xff09;&#xff1a; ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6cf6c3e3c821446a84ae542bcc2652d4.png) 前言 在python.tkinter设计标记语言(转译2-html)中提到了将Ti…

阿里云OSS创建,及修改读写权限为公共读。

1、创建Bucket 2、创建时需要注意点 〇 名字区域等略过不讲 ①默认为同城冗余&#xff0c;但计费标准更高&#xff0c;如果对数据安全性要求不严格&#xff0c;可以改为本地。 ②如果想开启公共读&#xff0c;会发现创建时改不了&#xff0c;暂时先不改&#xff0c;完成创建…

Vulhub靶机 ActiveMQ 反序列化漏洞(CVE-2015-5254)(渗透测试详解)

一、开启vulhub环境 docker-compose up -d 启动 docker ps 查看开放的端口 漏洞版本&#xff1a;Apache ActiveMQ 5.x ~ Apache ActiveMQ 5.13.0 二、访问靶机IP 8161端口 默认账户密码 admin/admin&#xff0c;登录 此时qucues事件为空 1、使用jmet-0.1.0-all.jar工具将…

JVM——垃圾回收器

目录 垃圾回收器 垃圾回收器的组合关系&#xff1a; 年轻代-Serial垃圾回收器&#xff1a; 老年代-SerialOld垃圾回收器&#xff1a; 年轻代-ParNew垃圾回收器&#xff1a; 老年代-CMS垃圾回收器&#xff1a; 年轻代-Parallel Scavenge&#xff1a;【JDK8默认】 老年代…

数据库第三次作业

第一题&#xff1a; 学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 学生选课表&#xff1a;S…

类与对象(OOP)

类(Class) 类是对象的模板或蓝图&#xff0c;用来描述对象的属性和行为。 动态与静态是同一张图像&#xff0c;最终效果也是相同 类的组成分别由&#xff1a; 属性(成员变量)&#xff1a;描述对象的状态。 方法(成员方法):描述对象的行为。 构造函数&#xff1a;用于创建对象…

haproxy详解笔记

一、概述 HAProxy&#xff08;High Availability Proxy&#xff09;是一款开源的高性能 TCP/HTTP 负载均衡器和代理服务器&#xff0c;用于将大量并发连接分发到多个服务器上&#xff0c;从而提高系统的可用性和负载能力。它支持多种负载均衡算法&#xff0c;能够根据服务器的…

选购电子实验记录本ELN时,怎么评估?

企业全面数字化的趋势愈发明显&#xff0c;实验室数字化也从“要不要实施”&#xff0c;变为“如何开始实施”、“如何避免实施失败”的紧迫状态。不实施数字化的企业&#xff0c;将迅速落后于同类企业&#xff0c;逐渐被市场淘汰。 其中&#xff0c;电子实验记录本&#xff0…

前端开发工程中如何利用DeepSeek提升工作效率:实战案例与策略解析

目录 引言DeepSeek的核心功能与技术优势实际项目场景与问题分析 3.1 电商网站性能优化3.2 企业级管理系统代码质量提升3.3 跨端应用开发效率优化DeepSeek解决问题的策略与手段 4.1 代码智能分析与重构4.2 性能瓶颈定位与优化建议4.3 团队协作与知识沉淀代码样例与操作流程数据驱…

Linux探秘坊-------7.进程概念

1.进程概念 1.冯诺依曼体系结构 输⼊单元&#xff1a;包括键盘,⿏标&#xff0c;扫描仪,写板等中央处理器(CPU)&#xff1a;含有运算器和控制器等输出单元&#xff1a;显⽰器&#xff0c;打印机等这⾥的存储器指的是内存 ⼀句话&#xff0c;所有设备都 只能直接和内存打交道。…

docker 部署nginx,nginx 504

遇到问题 原因&#xff1a; 因为用的docker 部署nginx, docker 应用与服务之间的端口未开放&#xff0c;导致访问不到服务。

MySQL 联合索引的最左匹配原则

环境&#xff1a;MySQL 版本&#xff1a;8.0.27 执行计划基础知识 possible_keys&#xff1a;可能用到的索引 key&#xff1a;实际用到的索引 type: ref&#xff1a;当通过普通的二级索引列与常量进行等值匹配的方式 询某个表时const&#xff1a;当我们根据主键或者唯一得…

GB300加速推进,RTX 50显卡芯片量产延后,NVIDIA面临新的挑战与机遇

野村分析师Anne Lee在2月12日的报告中表示&#xff0c;2025年全球服务器营收将同比增长46%&#xff0c;2026年增长22%。其中&#xff0c;AI服务器营收预计在2025年和2026年分别增长75%和31%。这些预测与近期美国主要云服务提供商(CSP)上调的资本支出指引基本一致。 GB300加速推…

J6 X8B/X3C切换HDR各帧图像

1、OV手册上的切换命令 寄存器为Ox5074 各帧切换&#xff1a; 2、地平线control tool实现切换命令 默认HDR模式出图&#xff1a; HCG出图&#xff1a; LCG出图 SPD出图 VS出图

游戏引擎学习第101天

回顾当前情况 昨天的进度基本上完成了所有内容&#xff0c;但我们还没有进行调试。虽然我们在运行时做的事情大致上是对的&#xff0c;但还是存在一些可能或者确定的bug。正如昨天最后提到的&#xff0c;既然现在时间晚了&#xff0c;就不太适合开始调试&#xff0c;所以今天我…

【故障处理】- RMAN-06593: platform name ‘Linux x86 64-bitElapsed: 00:00:00.00‘

【故障处理】- RMAN-06593: platform name Linux x86 64-bitElapsed: 00:00:00.00 一、概述二、报错原因三、解决方法 一、概述 使用xtts迁移&#xff0c;在目标端进行恢复时&#xff0c;遇到RMAN-06593: platform name Linux x86 64-bitElapsed: 00:00:00.00’报错。 二、报错…

多模态本地部署和ollama部署Llama-Vision实现视觉问答

文章目录 一、模型介绍二、预期用途1. 视觉问答(VQA)与视觉推理2. 文档视觉问答(DocVQA)3. 图像字幕4. 图像-文本检索5. 视觉接地 三、本地部署1. 下载模型2. 模型大小3. 运行代码 四、ollama部署1. 安装ollama2. 安装 Llama 3.2 Vision 模型3. 运行 Llama 3.2-Vision 五、效果…

哪吒闹海!SCI算法+分解组合+四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测

哪吒闹海&#xff01;SCI算法分解组合四模型原创对比首发&#xff01;SGMD-FATA-Transformer-LSTM多变量时序预测 目录 哪吒闹海&#xff01;SCI算法分解组合四模型原创对比首发&#xff01;SGMD-FATA-Transformer-LSTM多变量时序预测效果一览基本介绍程序设计参考资料 效果一览…

MySQL调用存储过程和存储函数

【图书推荐】《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;》-CSDN博客 《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…

网络防御高级-第8章及之前综合作业

标准版 接口ip配置 r2 [r2]interface GigabitEthernet 0/0/0 [r2-GigabitEthernet0/0/0]ip address 13.0.0.3 24 [r2-GigabitEthernet0/0/0]interface GigabitEthernet 0/0/1 [r2-GigabitEthernet0/0/1]ip address 100.1.1.254 24 [r2-GigabitEthernet0/0/1]interface Gigab…