QML: Самый Простой способ записать в текстовый файл?

QML в данный момент испытывает недостаток в командах базовой системы, таким образом, я ищу самый простой шаблон для записи в /tmp/text.txt.

7
задан 30 April 2014 в 13:15

3 ответа

Новый Файл или Проект. Выберите QML App with C ++ Plugin. qmake обычно легче взять, чем cmake. New File or Project

Выбирают название Вашего проекта.Дальше. Choose a name for your project

Обычно можно просто выбрать выбранную платформу по умолчанию.Дальше. Usually you can just choose the default framework selected.

Добавляют Управление версиями Базара, поскольку оно работает хорошо с Панелью запуска. Можно судить Мерзавца также, если Вы знакомы с ним. Панель запуска поддерживает обоих, но поддержка Мерзавца является все еще довольно новой по состоянию на июль 2016. Add Bazaar Version Control, as it works well with Launchpad.

Редактирование Ваш заголовок, добавляя эти три строки из комментариев. Edit your header, adding the three lines from the comments.

Редактирование Ваш источник, добавляя просто функцию в нижней части. Edit your source, adding just the function on the bottom.

Редактирование Ваш файл Main.qml, добавляя просто компонент в нижней части. Edit your Main.qml file, adding just the component on the bottom.

Запущенный Ваше приложение, и находят текстовый файл в Вашем каталоге сборки. Каталог сборки находится в том же каталоге Вашего каталога проекта, и это имеет слово "сборка -" снабженный префиксом к началу. Run your application, and find the text file in your build directory.

4
ответ дан 17 November 2019 в 03:41

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

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

файл проекта: FileIO.pro

# 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)

#ifndef FILEIO_H
#define FILEIO_H

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

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

main.cpp:

#include <QtGui/QGuiApplication>
#include "qtquick2applicationviewer.h"
#include <QQmlContext>
#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();
        }
    }
}

Для создавания приложения откройте Terminal и перейдите к папке проекта FileIO для ввода:

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

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

Обновление :

вышеупомянутый код будет работать без ограничений на настольное приложение. Относительно полномочий записи для Касания Ubuntu необходимо будет следовать инструкциям [приблизительно 1 110] Заключение для пакетов щелчка:

приложение будет иметь файлы доступа для чтения-записи в стандартных базовых каталогах XDG. Конкретно:

XDG_CACHE_HOME/<APP_PKGNAME>
XDG_CONFIG_HOME/<APP_PKGNAME>
XDG_DATA_HOME/<APP_PKGNAME>
XDG_RUNTIME_DIR/confined/<APP_PKGNAME>

, где 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
5
ответ дан 17 November 2019 в 03:41

Просто для уточнения политика Заключения, если Вы хотите записать файл на Касании Ubuntu, в Вашем файле mytype.cpp, замене:

QString filename = "text.txt";

:

QString filename = "/home/phablet/.local/share/your_app_name/text.txt";
0
ответ дан 17 November 2019 в 03:41

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

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