QT:QML中读取文件(QDesktopServices和QFile)

news2024/12/24 9:23:29

目录

一.介绍

二.QDesktopServices:

1.添加头文件

2.声明函数

3.操作

4.注册

5.qml调用

三.QFile:

1.添加头文件

2.声明函数

3.读取指定文件名的文件内容

 4.注册

5.qml中调用

四.效果展示:

1.QDesktopServices:上方按钮点击打开文件

2.QFile:下方矩形框中读取文件

五.代码演示

1.h

2.cpp

3.main.cpp

4.qml


一.介绍

QDesktopServices:这个类主要用于与操作系统的桌面服务进行交互。它提供了一些函数来访问常见的桌面服务,例如打开文件夹或URL。使用QDesktopServices::openUrl()方法,可以打开位于任意外部应用程序的URL文件。如果URL指向的是本地文件系统资源,将会用一个合适的应用程序打开文件;否则,将使用Web浏览器获取并显示该文件。此外,QDesktopServices还可以用来打开特定于桌面环境的目录。

QFile:这个类专门用于操作文件,包括读取、写入、删除、重命名和拷贝等操作。它既可以操作文本文件,也可以操作二进制文件。在使用QFile类之前,需要引入相应的头文件<QFile>。创建QFile类的对象时,可以使用其构造函数,如QFile::QFile()QFile::QFile(const QString &name)来指定要操作的文件。

二.QDesktopServices:

1.添加头文件

#include <QDesktopServices> 包含了用于处理桌面服务的类和函数,用于在应用程序中实现与桌面环境相关的功能,例如打开网页、发送邮件等。通过包含 <QDesktopServices> 头文件,可以使用其中的类和函数来执行与桌面服务相关的操作。以下是一些常用的类和函数:

  • QDesktopServices::openUrl(const QUrl &url): 打开指定的URL。
  • QDesktopServices::openUrl(const QString &url): 打开指定的URL字符串。
  • QDesktopServices::openUrl(const QUrl &url, QIODevice::OpenMode mode): 以指定模式打开指定的URL。
  • QDesktopServices::openUrl(const QUrl &url, const QString &program): 使用指定的程序打开指定的URL。
  • QDesktopServices::openUrl(const QUrl &url, const QStringList &programs): 使用指定的程序列表中的任意一个程序打开指定的URL。
  • QDesktopServices::openUrl(const QUrl &url, const QString &program, QIODevice::OpenMode mode): 使用指定的程序以指定模式打开指定的URL。
  • QDesktopServices::openUrl(const QUrl &url, const QStringList &programs, QIODevice::OpenMode mode): 使用指定的程序列表中的任意一个程序以指定模式打开指定的URL。

2.声明函数

3.操作

接受一个QString类型的参数pdfPath。该函数使用QDesktopServices::openUrl方法打开指定路径的PDF文件。

4.注册

5.qml调用

三.QFile:

1.添加头文件

#include <QFile> 是C++中用于包含Qt库中的QFile类的预处理指令。QFile类提供了对文件的读写操作,可以用于创建、读取和写入文本或二进制文件。

#include <QTextStream> 是C++中用于包含Qt库中的QTextStream类的预处理指令。QTextStream类提供了对文本流的读写操作,可以用于处理文本数据。

2.声明函数

3.读取指定文件名的文件内容

1.QFile file(fileName);:创建一个QFile对象,用于操作文件。

2.if (!file.open(QIODevice::ReadOnly)) {:尝试以只读模式打开文件。如果无法打开文件,则return "Cannot open file: " + fileName;:返回一个错误信息,表示无法打开指定的文件。

3.QTextStream in(&file);:创建一个QTextStream对象,与文件关联起来,用于读取文件内容。

4.QString content;:定义一个QString类型的变量content,用于存储文件的内容。

5.while (!in.atEnd()) {:使用循环来逐行读取文件内容,直到到达文件末尾。

6.content += in.readLine() + "\\n";:将读取到的每一行内容添加到content中,并在每行后面添加换行符"\n"。

7.file.close();:关闭文件。

8.return content;:返回读取到的文件内容。

 4.注册

5.qml中调用

四.效果展示:

1.QDesktopServices:上方按钮点击打开文件

2.QFile:下方矩形框中读取文件

五.代码演示

1.h

#ifndef READTXT_H
#define READTXT_H

#include <QDesktopServices>
#include <QObject>
#include <QFile>
#include <QTextStream>

class readtxt : public QObject
{
    Q_OBJECT
public:
    readtxt();

    Q_INVOKABLE void setShowPDF(QString pdfPath);


    Q_INVOKABLE QString readFile(const QString &fileName);

};

#endif // READTXT_H

2.cpp

#include "readtxt.h"
#include <QDesktopServices>
#include "QUrl"
#include <QFile>
readtxt::readtxt()
{

}

void readtxt::setShowPDF(QString pdfPath)
{
  QDesktopServices::openUrl(QUrl(pdfPath,QUrl::TolerantMode));
  qDebug()<<"ssssssssss";
}


QString readtxt::readFile(const QString &fileName)
{
    QFile file(fileName);

        if (!file.open(QIODevice::ReadOnly)) {
            return "Cannot open file: " + fileName;
        }

        QTextStream in(&file);
        QString content;

        while (!in.atEnd()) {
            content += in.readLine() + "\\n";
        }

        file.close();
        return content;
}

3.main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include "readtxt.h"
#include <QQmlEngine>
#include <QQmlContext>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

//    readtxt Qmlreadtxt;

    qmlRegisterType<readtxt>("Qmlreadtxt", 1, 0, "Qmlreadtxt");

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
//    engine.rootContext()->setContextProperty("readtxt",&Qmlreadtxt);


    return app.exec();
}

4.qml

// main.qml
import QtQuick 2.5
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
import Qmlreadtxt 1.0

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Qmlreadtxt{
        id: ww
    }

    Button {
        width: 100
        height: 50
        text: "点击"
        onClicked: {
            ww.setShowPDF("D://111.txt")
        }
    }


    Rectangle{
        width: 600
        height: 300
        anchors.bottom: parent.bottom
        TextArea {
              id: textArea
              anchors.fill: parent
              text: ww.readFile("D://111.txt")
          }
    }

}

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

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

相关文章

纯血鸿蒙APP实战开发——Web获取相机拍照图片案例

介绍 本示例介绍如何在HTML页面中拉起原生相机进行拍照&#xff0c;并获取返回的图片。 效果预览图 使用说明 点击HTML页面中的选择文件按钮&#xff0c;拉起原生相机进行拍照。完成拍照后&#xff0c;将图片在HTML的img标签中显示。 实现思路 添加Web组件&#xff0c;设置…

一看就会的AOP事务

文章目录 AOPAOP简介AOP简介和作用AOP的应用场景为什么要学习AOP AOP入门案例思路分析代码实现AOP中的核心概念 AOP工作流程AOP工作流程AOP核心概念在测试类中验证代理对象 AOP切入点表达式语法格式通配符书写技巧 AOP通知类型AOP通知分类AOP通知详解 AOP案例案例-测量业务层接…

太极图形学——高级数据结构——稠密

太极是一个面向数据的编程语言 在并行计算的框架下&#xff0c;在计算上花费的时间反而是少数&#xff0c;大量的时间都花在了数据获取&#xff08;也就是访问内存&#xff09;上面&#xff0c;这一点在之前的games103课程上也有简单的提及 cpu的计算能力非常强大&#xff0c…

Qwen学习笔记3:Qwen模型调用外部API实现模型增强(openai的形式)

前言 本文记录了使用本地部署的Qwen模型&#xff0c;调用外部API实现模型的功能增强&#xff0c;非常的易用&#xff0c;大家用于开发自己的应用&#xff0c;只需要作简单的修改就可以进行使用了。 本文的代码来源视频教程&#xff1a; Qwen大模型变强了&#xff0c;通过API…

【SQL】SQL常见面试题总结(2)

目录 1、增删改操作1.1、插入记录&#xff08;一&#xff09;1.2、插入记录&#xff08;二&#xff09;1.3、插入记录&#xff08;三&#xff09;1.4、更新记录&#xff08;一&#xff09;1.5、更新记录&#xff08;二&#xff09;1.6、删除记录&#xff08;一&#xff09;1.7、…

【文末附gpt升级方案】腾讯混元文生图大模型开源:中文原生Sora同款DiT架构引领新潮流

在人工智能与计算机视觉技术迅猛发展的今天&#xff0c;腾讯再次引领行业潮流&#xff0c;宣布其旗下的混元文生图大模型全面升级并对外开源。这次开源的模型不仅具备强大的文生图能力&#xff0c;更采用了业内首个中文原生的Sora同款DiT架构&#xff0c;为中文世界的视觉生成领…

NodeJS V8引擎内存和垃圾回收器

关于max_old_space_size max_old_space_size参数用于指定V8引擎的老生代内存的最大大小。通过增加max_old_space_size参数的值&#xff0c;我们可以提供更多的内存给V8引擎&#xff0c;从而提高应用程序的性能和稳定性。 既然提到了老生代&#xff0c;就不得不提下什么是垃圾&…

IDEA 每次启动都显示选择项目页面

IDEA版本&#xff1a;2021.3.3 打开 Settings > Appearance & Behavior > System Settings 取消勾选 Reopen projects on startup 然后下次启动 IDEA 会显示选择项目页面

论文阅读 - Anatomy of an AI-powered malicious social botnet

论文链接&#xff1a; https://arxiv.org/pdf/2307.16336.pdf 目录 摘要 1引言 2 相关工作 2.1 LLM驱动的网络威胁 2.2 LLM生成的内容检测 2.3 社交机器人检测 2.4 由 LLM 增强的机器人 3 Fox8僵尸网络的识别 4 特性 4.1 配置文件 4.2 社交网络 4.3内容类型 4.4放…

全新多语言海外抢单刷单系统源码 订单自动匹配 支持分组 代理后台

安装教程 测试环境&#xff1a;Nginx PHP7.0 MySQL5.6 config/database 修改数据库 设置运行目录public 伪静态thinkphp 后台登录地址&#xff1a;/admin 账号admin 密码admin123 前端出现报错 删除runtime文件夹得缓存文件即可 源码免费下载地址抄笔记 (chaobiji.cn)

数据结构——冒泡排序

懒猫老师-数据结构-(63)冒泡排序(起泡排序)_哔哩哔哩_bilibili 交换排序的一类 基本思想 两两比较相邻记录的关键码&#xff0c;如果反序则交换&#xff0c;直到没有反序的记录为止。 过程 有序区不断扩大&#xff0c;无序区不断减小

vllm docker部署qwen等大模型推理;api post调用访问

参考: https://docs.vllm.ai/en/latest/serving/deploying_with_docker.html https://hub.docker.com/r/vllm/vllm-openai https://blog.csdn.net/weixin_42357472/article/details/136165481 下载镜像: docker pull vllm/vllm-openai 镜像默认最后一层就是python -m vllm.…

ModuleNotFoundError: No module named ‘sklearn‘

ModuleNotFoundError: No module named sklearn 解决办法&#xff1a; pip install scikit-learn

在win10折腾Flowise:部署和尝试

Flowise 是一种低代码/无代码拖放工具&#xff0c;旨在让人们轻松可视化和构建 LLM 应用程序。 本地部署 操作系统&#xff1a; win10 由于网络、操作系统等各种未知问题&#xff0c;使用npm install -g flowise的方式&#xff0c;尝试了很多次&#xff0c;都没有部署成功&am…

Python 白底黑字图片去除红色水印

Python 白底黑字图片去除红色水印 import os from PIL import Imagedef remove_color(image_path, new_image_path):"""初始化:param image_path: 图片路径:param new_image_path: 新图片路径"""# 打开图片并转换为RGBA格式img Image.open(imag…

C语言例题42、打印金字塔

#include <stdio.h>void main() {int i, j;for (i 0; i < 5; i) {for (j 4; j > i; j--) {//输出空格printf(" ");}for (j 0; j < 2 * i 1; j) {//输出星号printf("* ");}printf("\n");} }运行结果&#xff1a; 本章C语言经…

【智能算法】清道夫优化算法(CFO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;W Zhang受到清道夫自然行为启发&#xff0c;提出了清道夫优化算法&#xff08;Cleaner Fish Optimization Algorithm, CFO&#xff09;。 2.算法原理 2.1算法思想 CF…

【JAVA SE】初识JAVA

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;JAVA 个人主页&#xff1a;Celias blog~ 目录 ​编辑 一、关于JAVA 1.1 JAVA语言简介 1.2 语言优势 1…

【Shell】shell编程之数组

目录 一、数组的概念 二、数组定义方法 三、数组 1.获取数组长度 2.获取数组数据列表 3.获取数组下标列表 4.读取某下标赋值 5.数组遍历 6.数组切片 7.数组替换 8.数组删除 四、数组追加元素 五、向函数传数组参数 ​编辑六、数组排序算法 1.冒泡排序 2.直接选…

Vue的学习 —— <路由与网络请求>

目录 前言 正文 一、初识路由 二、初识Vue Router 1、安装Vue Router 2、Vue Router基本使用 三、路由重定向 四、嵌套路由 前言 在之前的学习中了解到单页Web应用通常只有一个HTML页面&#xff0c;所有的组件展示和切换都在这个页面上完成。虽然我们可以通过动态组件…