Libreoffice и офис Microsoft

Невозможно записать файл из QML / Javascript, поэтому нам нужно немного C ++ для выполнения задания.

Создайте новый проект Qt Quick 2 Application (Built-in Elements) в Qt Creator с именем FileIO со следующим файлы:

Файл проекта: FileIO

# The .cpp file which was generated for your project. Feel free to hack it.
SOURCES += main.cpp

# Please do not modify the following two lines. Required for deployment.
include(qtquick2applicationviewer/qtquick2applicationviewer.pri)
qtcAddDeployment()

HEADERS += fileio.h

Файл заголовка: fileio.h (вдохновлен чтением и записью файлов в QML) 5]

#ifndef FILEIO_H
#define FILEIO_H

#include 
#include 
#include 

class FileIO : public QObject
{
    Q_OBJECT

public slots:
    bool write(const QString& source, const QString& data)
    {
        if (source.isEmpty())
            return false;

        QFile file(source);
        if (!file.open(QFile::WriteOnly | QFile::Truncate))
            return false;

        QTextStream out(&file);
        out << data;
        file.close();
        return true;
    }

public:
    FileIO() {}
};

#endif // FILEIO_H

fileio.h :

#include 
#include "qtquick2applicationviewer.h"
#include 
#include "fileio.h"

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

    QtQuick2ApplicationViewer viewer;
    viewer.rootContext()->setContextProperty("fileio", &fileIO);
    viewer.setMainQmlFile(QStringLiteral("qml/FileIO/main.qml"));
    viewer.showExpanded();

    return app.exec();
}

И, наконец, qml / FileIO / main.qml:

import QtQuick 2.0

Rectangle {
    width: 360
    height: 360
    Text {
        text: qsTr("Hello World")
        anchors.centerIn: parent
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            fileio.write("/tmp/test", "Ask Ubuntu");
            Qt.quit();
        }
    }
}

To создайте приложение, откройте терминал и перейдите в папку проекта FileIO, чтобы ввести:

`qmake && make && ./FileIO`.

Запустит приложение. Если вы нажмете на MainView, будет создан текстовый файл, и приложение будет закрыто.

qml / FileIO / main.qml :

Вышеприведенный код будет работайте без ограничений для настольного приложения. Что касается прав на запись для Ubuntu Touch, вам нужно будет следовать рекомендациям о Чтение и запись файлов в QML для пакетов кликов:

Приложение будет иметь файлы доступа для чтения / записи в стандартные базовые каталоги XDG. В частности:
XDG_CACHE_HOME/
XDG_CONFIG_HOME/
XDG_DATA_HOME/
XDG_RUNTIME_DIR/confined/
, где APP_PKGNAME - это то, что используется в поле «имя» манифеста клика. Например, если манифест клика имеет это:
$ cat ./manifest.json
{
  "name": "com.ubuntu.developer.you.yourapp",
  ...
}
, то приложение будет иметь доступ для чтения / записи к этим каталогам и любым файлам или поддиректориям под ними:
XDG_CACHE_HOME/com.ubuntu.developer.you.yourapp
XDG_CONFIG_HOME/com.ubuntu.developer.you.yourapp
XDG_DATA_HOME/com.ubuntu.developer.you.yourapp
XDG_RUNTIME_DIR/confined/com.ubuntu.developer.you.yourapp

1
задан 16 November 2016 в 23:17

0 ответов

Другие вопросы по тегам:

Похожие вопросы: