ここに表示されているのとまったく同じ方法で、QT で Y 軸 (または任意の軸) を中心にウィジェットを回転させたいと思います。
検索しましたが、時計回りまたは反時計回りに回転するような2次元変換を得たものはすべて
プロジェクト全体でこれを1回行うため、非常に単純なものが本当に必要です。
ここに表示されているのとまったく同じ方法で、QT で Y 軸 (または任意の軸) を中心にウィジェットを回転させたいと思います。
検索しましたが、時計回りまたは反時計回りに回転するような2次元変換を得たものはすべて
プロジェクト全体でこれを1回行うため、非常に単純なものが本当に必要です。
まず、通常の Qt ウィジェットでは、ペイント エンジンの動作方法 (完全に 2D) とレイアウト マネージャーの動作方法が原因で、これを行うことができないため、どのような解決策も自明ではありません。
これを行う最も簡単な方法は、ウィジェットをQGraphicsScene/View
としてに配置QGraphicsProxyWidget
し、メソッドを使用しsetTransform(const QTransform&, bool)
て変換行列を適用することです。
ただし、エンジンはまだ 2D であるため、必要な操作を記述する 3D 変換マトリックスを作成し、射影を使用して 2D マトリックスに変換する必要があります。単純ではありませんが、静的メソッドを使用してリンク先のような効果を「偽造」することができますsquareToQuad(const QPolygonF&, QTransform&)
。ユーザーがウィジェットを「回転」すると、1 つの垂直エッジが小さくなり、クアッド センターに向かって移動し、反対側のエッジが大きくなります。クアッドセンターに向かって移動します。
他のユーザー インターフェイス ウィジェットとうまく統合できる方法で Qt プロジェクトでこれを実現したい場合は、Qt Quick (Qt 4.7 +) または Qt Quick 2.0 (Qt 5.0 +) をチェックすることをお勧めします。これらは、より動的なインターフェイスの作成を容易にするために意図的に設計されています。それらは、他の Qt ウィジェットと同じようにアクセスできる使い慣れた高レベルの C++ ラッパーと組み合わせて、QML (ウィジェット機能を記述する CSS に似たマークアップ言語) を使用します。Qt Quick 2.0 は特にクールで、クールなパーティクル システム エフェクトを比較的簡単に描画できます。