BB-10 アプリを作成する必要があります。アプリには、動的ページなどの UI がかなり含まれている可能性があります。アプリケーション ロジック (データ モデルなど) を C++ で記述しようと考えています。QML を UI デザインに使用する必要がありますか? C++ と QML の統合はどの程度うまく柔軟に行われていますか? 問題は発生しませんか?私の UI は多くの QML ページ (または、ナビゲーション ペインなどに表示されるダイアログ) で構成されている場合があり、ユーザーが QML でいくつかのアクションをクリックすると、C++ コードを呼び出したり、他の QML ページに移動したりすることができます。助けてくれてありがとう。
3 に答える
私はモバイル開発について何も知りませんが、QML は素晴らしく、インターフェースの保守、変更、および他のデバイスへの移植を容易にするはずです。
Q_PROPERTY
QML と C++ の統合は、Qt フレームワーク、QObjects、およびメソッドを使用する限り、Q_INVOKABLE
簡単です... 本当に簡単です。
編集: ただし、C++ からの QML オブジェクトへのアクセスが逆に簡単だとは思わなかったことを付け加えなければなりません。これは、QML が少数のデータ型の階層でオブジェクトを編成し、 を使用findChild
またはチェックして子ノードを動的に検出する必要があるためobjectName
です。
とにかく、QML ではプロパティをバインドできるため、データを使用していくつかの C++ クラスを作成し、UI でそれらに簡単にアクセスできるはずです ;)
また、C ++を使用してアプリケーションを制御する必要がある場合にも、このような状況が発生します。qmlはあまり実行されません。NavigationPaneによってクラスを継承し、QmlDocument::create()
ナビゲーション使用シートの横にページがある場合は、ロジックを追加して最初のページを追加し、メソッドを追加します。このクラスは、これらのメソッドにアクセスするためにQ_INVOKABLE
使用して新しいページを作成するたびにsetContextこのクラスを渡します..最後に、ページを削除してメモリを解放するためのシグナルをQmlDocument::create()
追加または処理することを忘れないでくださいOnTrasitionEnded(Page*)
簡単な答え: C++/QML の統合は非常に優れています。非常に冗長になることもありますが、C++ でできないことは何もありません。
すべてを C++ で実行した方が 100 倍高速だとしても。BlackBerry は、すべての UI ワークフローを QML/Javascript でコーディングするというアイデアを推し進めています。
利点は、ビジネス ロジックとアプリ フローを明確に分離できることです。もう 1 つの利点は、QML の方が記述が短く、できれば維持しやすいことです。C++ で新しい QML オブジェクトを作成できることを忘れないでください。
onTriggered: {
var item = dataModel.data(indexPath);
if (item.count > 0) {
appLogic.updateFeed(item.id);
navPane.push(resultPage);
}
}