問題タブ [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 投票する
0 に答える
145 参照

qt - QGraphicsPixmapItem の mousePressEvent() でのマウス ボタンの切り替え

QGraphicsPixmapItem の mousePressEvent() でマウスの左ボタンと右ボタンを切り替える簡単でエレガントな方法はありますか? QGraphicsPixmapItem から派生した独自のクラスがあるため、独自のバージョンの仮想関数を実装できます。しかし、私はそれを行う簡単な方法を考えることはできません。

難しい方法は次のとおりです。

  1. ボタンを切り替えることができるQGraphicsSceneMouseEventから派生した独自のクラスを作成し、デフォルトの受信イベントを置き換えるmousePressEventで使用します。
  2. 元の mousePressEvent() からほとんどのコードをコピーして、ボタンを変更して私のものに貼り付けます。

しかし、これらの「解決策」は私には「話」せず、エレガントではないように見えます。そのうちの 1 つがエレガントかもしれませんが、それを見るのに十分な XP がありません。経験者がヒントを教えてくれませんか?

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

c++ - 不完全なタイプにつながるものは何ですか?(QGraphicsItem:ソースまたはターゲットのタイプが不完全です)

私はカスタムQGraphicsItemを持っています。これは、Qtのドキュメントで説明されている標準的な手順を使用して、クリックするとカーソルを開いた手に変更します。これは過去2週間ほどは問題なく機能しました。昨日、クラス内でいくつか変更しました。最も重要なことは、QGraphicsItemではなくQGraphicsPixmapItemから直接サブクラス化することです。

ある時点で、私は次のエラーを受け取り始めました(部分的に私自身の翻訳):

C664:パラメータ1を「Qt ::CursorShape」から「constQCursor&」に変換できません。ソースまたはターゲットのタイプが不完全です。

私は今、私のアイテムが不完全なタイプである理由を理解しようとしています。残念ながら、この問題が発生し始めた時期をさかのぼることはできません。変更された基本クラスは私の唯一の推測でしたが、これがどのように原因であるかを実際に考えることはできませんでした。エラーをグーグルで調べた後、クラスのメンバーがやや不明確な例を見つけましたが、宣言にエラーは見つかりませんでした。だから、私が何かを逃した場合に備えて、ここにヘッダーがあります:

このファイルが正しい場合、チェックアウトできる未定義の型につながる一般的な問題はありますか?たぶん私は間違った場所を探していますか?

お時間をいただきありがとうございます、ルイーズ

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

c++ - QGraphicsItemの奇妙な「不完全なタイプ」エラー

重複の可能性:
タイプが不完全になる原因は何ですか?(QGraphicsItem:ソースまたはターゲットのタイプが不完全です)

私はこの質問から始めました:不完全なタイプにつながるものは何ですか?(QGraphicsItem:ソースまたはターゲットのタイプが不完全です)

そこに述べられているように、私は次のエラーを受け取りました(部分的に私自身の翻訳):

C664:パラメータ1を「Qt ::CursorShape」から「constQCursor&」に変換できません。ソースまたはターゲットのタイプが不完全です。

アイテムが不完全である可能性がある理由を理解しようとしている間、私はそれを最小限のテストケースに分解しましたが、それでもエラーが表示されます。奇妙なことは:それ絶対に最小限です...

ヘッダ:

実装:

コンパイルされず、上記のようなエラーが発生します。ただし、mainメソッドにカーソルを設定するとitem->setCursor(Qt::OpenHandCursor);問題なく動作します。エラーは他のQGraphicsItems全体で持続しているようです(少なくともQGraphicsRectItemをテストしました)。

私は完全に混乱していて、次に何をチェックすべきか本当にわかりません。上記のコードは他のマシン/セットアップで機能しますか?より多くの情報を得るために他に何をテストできますか?

ありがとう、ルイーズ

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

c++ - Multiple inheritance: QGraphicsPixmapItem and QGraphicsTextItem

I need the have a object that combines the characteristics of both QGraphicsPixmapItem and QGraphicsTextItem (image + text).

Is multiple inheritance the best way to do it or are there any contraindications? If there are, what would you suggest?

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

c++ - Qt アプリケーションの奇妙なバグ

私のアプリケーションでは、 のQGraphicsViewチェックを再実装mouseReleaseEvent()し、マウスの位置にあるアイテムにイベントを処理するように伝えています。

私のQGraphicsItemビューは他の 2 つの で構成されており、2 つのQGraphicsItemsうちどちらがクリックされているか (またはボタンが離されているか) を確認し、それぞれのイベントを処理します。

ウィジェットのコンストラクターで、アイテムがリリースを検出したときに使用したのと同じメソッドを使用して、アイテムの 1 つをデフォルトで選択済みとして設定します。

デバッグしたところLabelItem、コンストラクターから select が問題なく呼び出されることがわかりました (アプリケーションを最初に起動したときに結果が明確になります)。しかし、アイテムをクリックすると、アプリケーションが終了します。選択機能に入ったが、そこから離れていないことがわかりました。問題はここにあります。

select 関数は 1 行のセッターにすぎないため、これは非常に奇妙です。

これはmouseReleaseEvent;

関数内の行をコメントアウトすると、エラーは発生しませんでした。他の CheckBoxItem についてはデバッグしていませんQGraphicsItemが、アプリケーションはそのイベントでも終了します。問題が関連している可能性があると思うので、select今のところに集中しています。

何がこれを引き起こしたのか、なぜこれが起こっているのか、私にはまったく手がかりがありません。私の過去の経験から、それは私が愚かに考えていない単純なものであると確信していますが、何を理解することはできません.

助けていただければ幸いです。

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

qt - qgraphicsitem をキャストできません

OK、エラーは明らかだと思いますが、現時点では見つかりません。

私は持っている:

同様のクラス GraphSceneCustom (QGraphicsScene から派生) および GraphPixmapItemCustom (QGraphicsPixmapItem から)。上記の wheelEvent() には、次のような行があります。

読みやすさと複雑さを軽減するために、置換の左側を削除しました。そして、この行で私は得る

「qgraphicsitem_cast(QGraphicsItem*&)」の呼び出しに一致する関数がありません

私は何を間違っていますか?この間違いは明らかだと思います (私の最も一般的な間違いは何ですか - 私はめったに難しいものを作りません。しかし、私が作るとき、それらは本当に難しいです)。

はい、QGraphicsItem クラスのヘッダーを追加しました。

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

qt - QGraphicsScene : カーソルの下の QGraphicsItemGroup を取得します

カーソルの下にある QGraphicsItemGroup のポインターを取得するのに問題があります。QGraphicsScene::ItemAtグループのオブジェクトの 1 つを返しますが、ItemGroup 自体は返しません。

それを行う方法の手がかりはありますか?

どうも

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

qt - QGraphicsItem が選択されたときに呼び出されるメソッド

おそらくひっかけ問題ですが、答えが見つかりません。

QGraphicsItem がいつ選択されるかを知る必要があります。呼び出されるメソッドが存在する必要があります。

私は知ってQGraphicsItem::itemChange()いますが、あまりにも頻繁に呼び出されます。

より良い方法はありますか?

どうも

編集:これで

選択を変更するたびに 2 回電話がかかってきます。

0 投票する
0 に答える
1153 参照

qt - スムーズな QGraphicsView::centerOn(QGraphicsItem) を実装するには?

という名前のQGraphicsItem子孫がlnkあり、このコードを使用して、グラフィック ビュー四角形をシーン内のその場所に移動します。

ここで、ビューをアイテムの場所までスムーズにスクロールしたいと思います (たとえば、Google マップなど)。

google と stackoverflow で調べると、いくつかの解決策が見つかりましたが、すべてが古い API に基づいており、私にはあまり明確ではありません。

たとえば、これは次のとおりです。 QGraphicsView をスムーズにする centerOnは古い API に基づいており、ソース コードは不完全です。これも古くなっています: http://www.qtcentre.org/threads/30970-QGraphicsView-centerOn()-with-smooth-scrolling

新しい API でこれを取得する方法を理解するのを手伝ってください (QPropertyAnimation 機能を使用する必要があると思います)。