web-dev-qa-db-ja.com

GUI用のQt Designer C ++またはQML

QTでのQMLの使用は非常に新しいことを知っており、QTDesignerまたはQMLを使用してアプリケーションを設計する必要があるかどうか疑問に思っていました。私はMVCパターンを使用しますが、GUIにQMLを使用する場合の主な懸念は、C++アプリの残りの部分に統合するのは簡単ではないかもしれないということです。

個人的なアドバイスをお気軽に、私は非常に感謝します。ありがとう!

49
clenemt

QMLは主にモバイルプラットフォームを対象としています。その若さとさまざまなプラットフォームインターフェイスの規則に対する懸念のため、ボタンやコンボボックスなどの標準コントロールがありません(ただし、 Components プロジェクトを参照してください)。モバイルを使用している場合、またはUIで高度にカスタマイズされた視覚スタイルが必要な場合は、QMLmightを検討する価値があります。カスタムコントロールを設計する際の多くの余分な作業に備えてください。私の意見では、QMLとC++の統合はまだかなり大雑把です。個人的には、よりシンプルなアプリ、モバイルプラットフォーム、およびJavaScriptでのみQMLを使用することをお勧めします。適切な状況では、C++でカスタムQML要素を作成することを検討できます。

QtのC++ APIは、すぐにはなくなりません。また、デスクトップを念頭に置いて設計されているため、デスクトッププラットフォームでのユーザーの期待に応えることができます。 デスクトップを使用している場合は、C++とDesignerを使用することをお勧めします。QMLが少し成熟した後でも、おそらく適切ではないでしょう。ほとんどのデスクトップアプリのソリューション。

更新!

変更開始 のように見えます。私はまだ自分で新しいコンポーネントを試していませんし、ドキュメントは少しまばらに見えます(少なくとも、邪魔にならないようですが)。これにより、最終的にデスクトップでQMLを使用する際の最大の障壁を取り除くことができます。これが長期的にサポートされるかどうかはまだ分からないが、早期導入者になるリスクを受け入れるなら、QMLがデスクトップアプリの実行可能な選択肢になると思う。

46
Steve S

ニーズに合っているかどうかをテストするために、少しQMLを試す価値があります。

動的なインターフェイスとアニメーションを備えた高度にカスタム化されたUIを構築している場合、QMLはその仕事に適しています。従来のデスクトップアプリケーションを構築している場合は、おそらくQt C++ APIを使い続けたいと思うでしょう。

QMLとC++の統合に関して、QMLはC++コードと簡単に統合できるように設計されており、多くのQMLアプリケーションは何らかのC++バックエンドを使用しています。 C++オブジェクトをQMLインターフェイスに挿入したり、C++でカスタムQML要素を記述したりするのは簡単です。 http://doc.qt.io/archives/qt-4.7/qtbinding.htmlhttp://doc.qt.io/archives/qt-4.7をご覧ください/qml-extending-tutorial-index.html

15
blam

上記の回答で見落としていた1つのことは、QMLにはビジネスロジック用のJavaScriptの利点/欠点が追加されていることです(必要な場合)。現在、デスクトップ用の(中小規模の)サイズのアプリケーションを構築していますが、現在(2人)のアルファユーザーが楽しんでいます。私は、フレームワークの表現力と、それをどれだけ早く立ち上げてテストできるかに感心しています。全般的に、RADエディター(デザイナー)よりも作業が速いことがわかり、ホバー/検証などの迷惑なことをしているときに、JavaScriptをUIのフォールバックとして使用することを楽しんでいます。 ..

それはあなたがその言語にどれだけ慣れているかによると思います。 C++が "go to"言語である場合、おそらくデザイナーを支持するでしょう。 Webから来ている場合(告白、私はJava EEエンジニア/ MVC .NET開発者が多くのフロントエンドをやっています))、あなたはそれがすっきりしていて速いことに気付くでしょう。

また、ユーザーが最近期待している応答性も可能にします。全体としては、大きなプラスになります。試してみてください。おそらく、同じ時間枠でかなり喜ばれ、いらいらするでしょう。私はまだいくつかのこと(特にFileIO)に怒っていますが、デスクトップではめったにしない方法で物事のGUI側を楽しんでいます。

13