Güncelleme: 14.04 için int_ua'nın çok basitleştirilmiş cevabına bakınız.
Orjinal metin:
Http://talk.maemo.org/showthread.php?t=87580 adresinde , uzantıyı QML'ye nasıl ekleyeceğinize ilişkin temel bir genel bakış vardır. Bunun yerine ubuntu-sdk'yi kullanarak denemeye karar verdim, ki bu biraz farklı. Aşağıda belgeleyeceğim.
Bu proje için QtCreator'da C ++ Arka Uçlu Ubuntu Touch / Simple UI'yi seçtim. Bu, QML'de yazılmış arka uç ve touchui ön ucu olmak üzere iki ayrı bölüm içeren bir proje oluşturur. Arka uca, Launcher sınıfı için iki dosya ekleyeceğiz.
launcher.h:
#ifndef LAUNCHER_H
#define LAUNCHER_H
#include <QObject>
#include <QProcess>
class Launcher : public QObject
{
Q_OBJECT
public:
explicit Launcher(QObject *parent = 0);
Q_INVOKABLE QString launch(const QString &program);
private:
QProcess *m_process;
};
#endif // LAUNCHER_H
launcher.cpp:
#include "launcher.h"
Launcher::Launcher(QObject *parent) :
QObject(parent),
m_process(new QProcess(this))
{
}
QString Launcher::launch(const QString &program)
{
m_process->start(program);
m_process->waitForFinished(-1);
QByteArray bytes = m_process->readAllStandardOutput();
QString output = QString::fromLocal8Bit(bytes);
return output;
}
Bu sınıf, bir programı yürütmek için QProcess'i kullanır, bitmesini bekler, stdout'unu okur ve bir dize olarak döndürür.
Daha sonra sınıfı dahil etmek için backend / backend.cpp dosyasını değiştirmeniz gerekiyor. Bu iki satır gerektirir. Dahil et:
#include "launcher.h"
ve BackendPlugin :: registerTypes'de bir satır ekleyin:
qmlRegisterType<Launcher>(uri, 1, 0, "Launcher");
Dahil edilen örnek olan MyType için zaten bir satır olmalıdır. Bundan sonra arka ucu oluşturabilmeliyiz. Geriye kalan tek şey main.qml dosyasında kullanmaktır. Bunun için bir satır ekledim:
Launcher { id: myLauncher }
ve Button öğesinin onClick işleyicisine şunları ayarlayın:
myType.helloWorld = myLauncher.launch("date");
Bu noktada geriye kalan tek şey onu başlatmak ve test etmektir. QtCreator varsayılan olarak her şeyi düzgün ayarlanmış gibi görünmediği için burada bir sorunla karşılaştım. Geçici çözüm olarak, terminalde QtCreator proje dizininize gidin ve:
mkdir -p Ubuntu/Example
Ardından libUbuntuExample.so dosyasını ProjectBuildDir / arka uçtan Ubuntu / Örnek'e ve qmldir dosyasını ProjectName / backend / qmldir'den kopyalayın. Sonra çalıştırabilirsiniz:
qmlscene -I . ProjectName/touchui/main.qml
Eminim tüm bunları donatmak için basit bir yol var, bu yüzden Build / Run sadece çalışır.