最近自学qml,尝试用qml写个小程序,熟悉qml简单用法
#ifndef FILERWRITER
#define FILERWRITER
#include <QQuickTextDocument>
#include <QtGui/QTextCharFormat>
#include <QtCore/QTextCodec>
#include <qqmlfile.h>
#include<QFile>
#include<QObject>
//该类主要实现文件的读写功能
class FileRWritter:public QObject
{
Q_OBJECT
Q_PROPERTY(QString m_fileName READ getFileName WRITE setFileName)
public:
FileRWritter(QObject *parent= NULL); //QString filename,
// void saveFile(QString filedata);
// QString readFile();
Q_INVOKABLE void saveFile(QString filedata);
Q_INVOKABLE QString readFile();
QString getFileName();
void setFileName(QString filename);
private:
QString m_fileName;
};
#endif // FILERWRITER
#include "filerwriter.h"
#include <QByteArray>
#include<QString>
#include<QMessageBox>
FileRWritter::FileRWritter(QObject *parent):QObject(parent)
{
// if(filename.isEmpty())
// {
// return;
// }
// m_fileName = filename; QString filename ,
}
void FileRWritter::saveFile(QString filedata)
{
if(filedata.isEmpty())
{
return;
}
// int index = m_fileName.lastIndexOf(":");
QString filePath =m_fileName.right(m_fileName.length() - 8);
QFile file(filePath);
if(file.exists())
{
file.remove();
}
if(!file.open(QIODevice::ReadWrite))
{
QMessageBox::information(NULL,"提示","文件打开失败"+filePath);
return;
}
int length = file.write(filedata.toStdString().data());
if(length != filedata.length())
{
QMessageBox::information(NULL,"提示","保存失败");
}
file.close();
}
QString FileRWritter::readFile()
{
QString filePath =m_fileName.right(m_fileName.length() - 8);
QFile file(filePath);
if(!file.open(QIODevice::ReadWrite))
{
QMessageBox::information(NULL,"提示","文件打开失败"+filePath);
return "";
}
QByteArray filedata = file.readAll();
file.close();
return filedata;
}
QString FileRWritter::getFileName()
{
return m_fileName;
}
void FileRWritter::setFileName(QString filename)
{
m_fileName = filename;
}
#include <QApplication>
#include <QQmlApplicationEngine>
#include "filerwriter.h"
#include <QtQml>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
//为了能在qml中使用上面写的c++类<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">FileRWritter,必须进行注册</span>
qmlRegisterType<FileRWritter>("com.mytexteditor.filerwritter", 1, 0, "FileRWritter");
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2
import QtQuick.Controls 1.2;
import QtQuick.Layouts 1.1
import QtQuick.Controls.Styles 1.3
import com.mytexteditor.filerwritter 1.0
ApplicationWindow {
title: qsTr("TextEditor")
width: 640
height: 480
visible: true
id: