問題タブ [qgraphicsitem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1550 参照

qt - QGraphicsItem のシェーダー プログラムの作成

QGraphicsItem を追加する QGraphicsScene があります。QGraphicsItem 内で、OpenGL ES 2.0 の hello 三角形の例で使用される三角形をレンダリングします。問題は、関数以外の場所でシェーダーを作成してコンパイルすると、コンパイルQGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)されないことです。GL レンダリング コンテキストをアクティブにする必要があることはわかっていますが、ビューポートを GLWidget に設定すると発生しませんか?? QGraphicsItem コンストラクターまたは QGraphicsScene でそれらをコンパイルし、QGraphicsItem を親として設定するなど、さまざまなことを試しました (これは非常に愚かなことだとわかりました) が、(明らかに) 何も機能しません。QGraphicsItem クラス内に initShaders() 関数を作成し、シーンでアイテムが作成された後に呼び出すことが最も論理的であると思われましたが、これもうまくいきませんでした。

0 投票する
2 に答える
10722 参照

qt - QT: qobject_cast の問題

QGraphicsItem および QGraphicsScene クラスを派生させました。アイテムが Scene() を呼び出して、QGraphicsItem * の代わりに derviedGraphicsItem * を取得できるようにしたいので、QGraphicsScene::itemAt を再実装して、派生ポインターを返します。

次のエラーが表示されます (Qt 4.6、Ubuntut 10.4 の GCC 4.4.3)

次に、QGraphicsItem が QObject を継承していないことに気付いたので、派生した QGraphicsItem クラスに QObject と QGraphicsItem から複数の継承を持たせ、Q_OBJECT マクロを追加してプロジェクトを再構築した後、同じエラーが発生します。

私はこれについて間違った方法で進んでいますか?親クラスを子としてキャストしようとするのは悪い設計であることはわかっていますが、この場合は、派生アイテム クラスに新しい機能があり、そのオブジェクトがその新しい機能を呼び出す方法を必要とするため、私が望むように思えます。 itemAt() を使用してアイテムのシーン オブジェクトを要求するのが最善の方法のように思えますが、正しい型のポインターを返すには itemAt() が必要です。QGraphicsScene::itemAt() によって返された QGraphicsItem * を dynamic_cast を使用して派生アイテムにキャストさせることで、これを回避できますが、なぜそれが機能し、qobject_cast が機能しないのか、または dynamic_cast と qobject_cast を使用する利点または欠点がよくわかりません。 .

編集:派生クラスで QGraphicsItem::scene() を再実装して DerivedScene * を返すことを忘れていました。

しかし、これはコンパイルエラーを引き起こしているようには見えません...

0 投票する
2 に答える
630 参照

python - PyQt: setPosAt を使用した QGraphicsItemAnimation

次のように setPos メソッドをオーバーライドして単純な setPos アニメーションを作成できないため、少し問題が発生しました。

よろしくお願いします、b52

0 投票する
1 に答える
2584 参照

qt - QtQGraphicsItem移動アニメーション

QGraphicsItemで「アニメーションの移動」をどのようにコーディングすればよいのでしょうか。moveBy(qreal、qreal)に似ていますが、インスタントではありません。QtAnimation Frameworkで探す必要がありますか?

0 投票する
1 に答える
3611 参照

qt - QGraphicsItem's - 選択と回転

QGraphicsItemsユーザーが少数を選択してグループとして回転できるアプリケーションを実装したいと思います。すべてのアイテムを 1 つに追加できることはわかっていますが、各アイテムQGraphicsItemGroupを保持する必要があります。Z-value出来ますか?

2 つ目の質問もあります。私はQGraphicsItemある点を中心に回転しようとしています(とは異なります(0,0)- としましょう(200,150))。その操作の後、このアイテムをもう一度回転させたいのですが、今は の周り(0,0)です。以下のコードを使用しています。

2回目の回転の後、アイテムがポイントを中心に回転するのではなく、他のポイントを中心に回転することに気付きました(0,0)(どれかわかりません)。また、操作の順序を変更すると、すべてがうまく機能することにも気付きました。

私は何を間違っていますか?

0 投票する
4 に答える
5655 参照

c++ - QGraphicsItemの境界線を描画します

の境界線を描く方法はQGraphicsItem?オーバーロードされたペイント方法の単純なpainter->drawRect( boundingRect() )方法は正しくありません(右下隅がアイテムの外側にあります)。

0 投票する
2 に答える
3037 参照

qt - フォーカスアウトの通知を受けて、QGraphicsItemからクリックするイベントを取得する方法

私はNodeと呼ばれるQGraphicsItemから実装されたクラスを持っています。

私は長方形の「ノード」を持っていて、ユーザーがそれをクリックすると何かをすることができます

mousePressイベントとmouseReleaseイベントを使用します。

しかし、ユーザーが長方形の「外」をクリックしたときに通知を受け取りたいのですが。

私はこれらの関数を実装しようとしました:

Qtコード:

長方形をクリックしたり、長方形の外をクリックしたりしても、これらは反応しません。たとえば、マウスの位置を取得して、長方形から外れている場合は制御するなど、自分でロジックを設定する必要がありますか?または組み込みのメソッドはありますか?

または、「ノード」オブジェクトは、他のノードオブジェクトがクリックされたかどうかをどのように知ることができますか?

また、グーグルで疑問に思いますが、focusineventとfocusouteventがいつトリガーされるのかわかりませんでしたか?アイテムをクリックしてからアイテムから外れたときにfocusOutEventが機能する必要があると思いますが、間違っていますか?

アイデアをありがとう。

0 投票する
1 に答える
633 参照

image - QGraphicsPixmapItemが画像を表示していません

助けられる?垂直スクロールバーで空白のビューが表示されます。コードを確認できますか?問題はitem.setPixmap(pixmap);から始まると思います。ピックスマップは、画像が読み込まれるのと同じサイズの画像であるためです。ありがとう

0 投票する
1 に答える
695 参照

qt - 要素が関数QGraphicsItem::shape()でフォーカスされているかどうかを取得するエレガントな方法

グラフィカルなqtアプリケーションでは、QGraphicsItemから継承するオブジェクトがpaintメソッドにフォーカスされているかどうかを知ることができます。

Qtコード:

しかし、私はそれをクリックする必要があり、焦点が合っているかどうかに関係なく形状を変更する必要があります。焦点を絞った情報を入手するにはどうすればよいですか

Qtコード:

適切な方法で方法?グローバル変数を宣言しようと思いますが、このアイデアは好きではありません。ありがとう

0 投票する
2 に答える
1560 参照

qt - QGraphicsItem の「itemChange()」に関する質問

itemChange の関数では、まず、追加する子アイテムを取得し、次に dynamic_cast を使用して「MyItem」にキャストしますが、キャストは常に失敗します。

どうもありがとう!