QML в данный момент испытывает недостаток в командах базовой системы, таким образом, я ищу самый простой шаблон для записи в /tmp/text.txt
.
Новый Файл или Проект. Выберите QML App with C ++ Plugin. qmake обычно легче взять, чем cmake.
Выбирают название Вашего проекта.Дальше.
Обычно можно просто выбрать выбранную платформу по умолчанию.Дальше.
Добавляют Управление версиями Базара, поскольку оно работает хорошо с Панелью запуска. Можно судить Мерзавца также, если Вы знакомы с ним. Панель запуска поддерживает обоих, но поддержка Мерзавца является все еще довольно новой по состоянию на июль 2016.
Редактирование Ваш заголовок, добавляя эти три строки из комментариев.
Редактирование Ваш источник, добавляя просто функцию в нижней части.
Редактирование Ваш файл Main.qml, добавляя просто компонент в нижней части.
Запущенный Ваше приложение, и находят текстовый файл в Вашем каталоге сборки. Каталог сборки находится в том же каталоге Вашего каталога проекта, и это имеет слово "сборка -" снабженный префиксом к началу.
Нет никакого способа записать в файл от 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
Просто для уточнения политика Заключения, если Вы хотите записать файл на Касании Ubuntu, в Вашем файле mytype.cpp, замене:
QString filename = "text.txt";
:
QString filename = "/home/phablet/.local/share/your_app_name/text.txt";