目录
一.介绍
二.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")
}
}
}