qml实现简单记事本程序


最近自学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:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值