37

Qt5 ベータ版を使用しており、QWidget ベースのオブジェクトを QML に埋め込もうとしています。目標は、可能な限り QML を使用し、QML が必要なことを行わない場合にのみ QWidget オブジェクトを使用することです。Qt4.7 でこれを行う方法を説明するリンクを見つけましたが、Qt5 でこれを行う方法を説明する情報は見つかりませんでした。

http://doc.qt.digia.com/4.7/declarative-cppextensions-qwidgets.html

同じ例は、次の Qt5 の例のフォルダーでも利用できます。

例\qtquick1\declarative\cppextensions\qwidgets

残念ながら、この例では QtQuick 2 ではなく QtQuick 1 を使用しており、Qt5 の新機能を使用したいと考えています。私は実際に qwt ウィジェットを埋め込みたいのですが、最初のステップとして、単純な QWidget ベースのオブジェクトを喜んで埋め込みます。

Qt5 / QtQuick 2 でサンプルを動作させるのを手伝ってくれる人はいますか?

4

5 に答える 5

31

Qt Quick 2 は GPU での効率的なレンダリングのためにシーン グラフを使用します。残念ながら、これによりクラシック ウィジェットをシーンに埋め込むことができなくなります。の助けを借りてそのようなウィジェットを埋め込む古いアプローチはQGraphicsProxyWidget、Qt Quick 1 でのみ機能します。QGraphicsViewQGraphicsProxyWidget

今のところ、私が知っているシーン グラフに従来の QWidget を埋め込むことを有効にする計画はありません。QPainter の概念、従来のウィジェットに使用される描画フレームワーク、および新しいシーン グラフは互いにうまく機能しないため、これが変わる可能性はかなり低いと思います。

QML のニーズに合わせて特別に調整された新しいウィジェット セットを開発するいくつかの取り組みがありますが、どれも従来のウィジェットほど強力で成熟したものではありません。最も顕著なものは、バージョン 5.1 以降の Qt にバンドルされているQML クイック コントロールです。

本当に QWT に依存しているのであれば、今のところ Qt Quick 1.1 を使い続けることをお勧めします。おそらくあなたのようなケースのために、Qt 5にまだバンドルされています。ただし、この方法では新しいシーン グラフを利用できません。

于 2012-10-23T10:18:46.800 に答える
8

できることは、ウィジェットを画像にレンダリングし、テクスチャとしてアップロードすることです。インタラクションのために、誰かがシーングラフから mouseClick や keyPressed などのイベントを転送し、ウィジェット座標に変換し、テクスチャを渡し、レンダリングし、再度アップロードする必要があります。ただのアイデア:)

于 2012-11-29T17:21:35.233 に答える
6

推奨されるアプローチは、QWidget ベースのアプリケーションを使用し、QWidget::createWindowContainer を使用して QML パーツを埋め込むことです。

于 2013-11-09T12:55:20.550 に答える