問題タブ [qgraphicsview]
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.
c++ - QGraphicsViewのすべてのスペースを占めるようにQGraphicsItemのサイズを変更すると、ウィンドウのサイズが変更されたときに問題が発生します
私はQGraphicsItem
(実際には)を持っており、それが追加された(これも実際には派生クラス)QDeclarativeItem
の可視スペース全体を占めるようにしたいです。通常は、ビューに合わせてルートオブジェクトを使用でき、自動的にサイズ変更されます。QGraphicsView
QDeclarativeView
QDeclarativeView::setResizeMode(QDeclarativeView::SizeRootObjectToView)
QDeclarativeView
私が抱えている問題は、を使用してルートウィジェットを手動で作成していることです
QDeclarativeView
を呼び出すことによって自動的にそれを行わせる代わりにsetSource()
。これを行う理由は、特定のイベントが発生したときにQMLシーンを交換したいが、前のシーンを破棄したくないためです。呼び出すと、が呼び出されるsetSource()
前に追加されたすべてのアイテムが削除されます。setSource()
そのため、代わりに自分で「ルートオブジェクト」を作成し、それを手動でシーンに追加しています。
私は次のように、ウィンドウのresizeEventを使用してサイズを変更していますQDeclarativeItem
。
これは機能します!しかし、それはあまりきれいではありません。ウィンドウのQDeclarativeItem
サイズをすばやく変更すると、のサイズが十分に速くならず、追いついてサイズを変更する前に、灰色の背景が一時的に表示されます。また、あまりスムーズではありません。
これは、サイズ変更されている複雑なアイテム(私の場合はQWebKitウィジェット)がある場合にのみ発生します。単純なアイテムには問題なく機能します。ただし、それをQDeclarativeView
やらせても、これらの問題はどちらも発生しません。サイズが正しくスムーズに変更されます。
これはQtDeclarativeのものに固有のものではなく、QGraphicsViewに固有のものだと思いますが、おそらく私はそこで間違っています。
誰かアイデアはありますか?
qt - 大きなQPixmapsがOpenGLでクラッシュする
たくさんの画像があるQGraphicsViewをプログラミングしています。しかし、解像度8528 x 1128 px(パノラマ画像)のJPEGを表示すると、QGraphicsPixmapItemがレンダリングされません。黒い四角が表示されるだけです。「通常の」サイズの画像は適切にレンダリングされます。問題が発生するサイズの「魔法の限界」を見つけようとはしていません。
Ubuntu 10.10 x64を搭載したラップトップでは、グラフィックカードドライバーがクラッシュし、Gnomeセッションが再開されます。
OpenGLを無効にすると、すべて正常に機能します。
なんで?何かできることはありますか?
私は非常によく似た問題を抱えている別のものを見つけました:http ://www.qtforum.org/article/34238/really-strange-problem-with-qgraphicsview-and-opengl.html
qt - QGraphicsViewにスムーズなcenterOnを実行させる
私はQtの初心者ではありませんが、わからないことがいくつかあります...私はPythonでプログラミングしていますが、どの言語でも自由に回答を投稿してください。
したがって、QGraphicsScene内に配置されたいくつかのQGraphicsItemがあり、シーンは通常のQGraphicsViewで表示されます。すべてが正常です。
私のシーンは非常に大きく、10,000 x 10,000ピクセルで、すべてのグラフィックアイテムが散らばっています。
例えば :
私の質問は、centerOnに似たものを使用して、すべてのアイテムのビューをどのように中央に配置できますか?
現在、centerOnは次のアイテムで高速になります。カーブを緩和するQPropertyAnimationを使用して、ゆっくりと移動したいですか?
大きな円でview.translate(1、1)を使用してビューを次のアイテムに移動しようとしましたが、centerOnのように、移動が速すぎます。
翻訳の間にtime.sleep(0.01)で少し待ってみましたが、シクルが存在するまでウィンドウがブロックされます...それは悪いことです。
どうもありがとうございます !
c++ - mousePressEvent が正しくバインドされていませんか?
Qt のグラフィックス ビューに慣れるために、Qt で簡単なチェス盤を実装しています。今のところ、チェスの駒はありません。
四角形を使用してすべてのタイルを表すため、BoardTile
( から継承する) クラスを作成して、QGraphicsRectItem
を定義できるようにしましたmousePressEvent
。
マウス クリックに関連付けた小さなテスト コードを次に示します。
2 行目の最初のタイルをクリックすると、次のメッセージが表示されます。
クリックされたタイル (1, 0)
次に、他のタイルをクリックすると、まったく同じメッセージが表示されます。メッセージの内容は、最初にクリックしたタイルによって異なります。どうしてこれなの?mousePressEvent
を間違ってバインドしましたか?
完全なコード http://www.box.net/shared/4m6nrvuxa4 (アップデート 1)
更新 2event->ignore();
: afterを付けるmesg.exec()
と正常に動作することに気付きました。私はそれが解決策ではないことを知っています(おそらくあらゆる種類の奇妙な動作につながるため)が、なぜそれがうまくいくのか知りたい. これは、実装で犯した可能性のある間違いについて何か重要なことを明らかにしていますか?
更新 3mousePressEvent
: に変更してみるべきだと誰かに言われましたmouseReleaseEvent
。奇妙なことに、それは機能します。私の知る限り、2 つのイベントの唯一の違いは、最初のイベントはマウス ボタンを押したときにトリガーされ、後者はそのボタンを離したときにトリガーされることです。では、なぜmouseReleaseEvent
望ましい動作をトリガーし、トリガーmousePressEvent
しないのでしょうか?
qt - Qt QGraphicsView 1 つの背景画像を中央に表示
私のQGraphicsView
アイテムは背景画像よりもかなり大きいのですが、その背景画像を 1 回だけ描画したいと考えています。これで、スペースの数だけ背景画像で全体が埋め尽くされます。
では、その背景画像を強制的にビューの中央に 1 回だけ描画するにはどうすればよいでしょうか?
現在使用しているコードは次のとおりです。
回答ありがとうございます。
c++ - qtでスクロールバーを同時に移動する方法
視点がxyとxzの2つのビューがあります。これらのビューには独自のスクロールバーがあり、これらのビューのx側は同じです。x辺のスクロールバーを動かすとき、xスクロールバーを同時に動かしたい。
ビューのクラスはでQGraphicsView
あり、これらのビューのスクロールバーは独自のスクロールバーです。どうすればそれを作ることができますか?どんな助けでもありがたいです。
ありがとう
qt - QGraphicsScene でドロップを受け入れる
にドラッグアンドドロップを実装しようとしていQGraphicsScene
ます。オーバーロードしたイベントは次のとおりです。
シーンはまだドロップを受け入れません。私はそれができないからだとsetAcceptDrops(true)
思いQGraphicsScene
ます。
グラフィックシーンでドロップを受け入れるにはどうすればよいですか?
macos - Mac 上の PyQt4: OpenGL を使用した QGraphicsView がちらつく
Mac OS XI では、QGraphicsView と OpenGL に問題があります。毎回ではありませんが、QGraphicsView が更新されると、ちらつきが発生することがあります。OpenGL がなくても大丈夫です。しかし、OpenGL が必要です。Win 7 と Ubuntu では問題ありません。PyQt 4.8.1 で QT 4.7 を使用しています。Mac OS X (10.6.4 および 10.6.5) を搭載した Macbook Pro 2010 と Macbook Air 2009 で試しました。DoubleBuffer を True に設定し、他のものを試しました。なんの効果もありません。あなたの誰かが私がその問題を解決するのを手伝ってくれることを願っています.
qt - Qt のウィンドウに合わせて画像のサイズを変更する
Qt を使用してアプリケーションを構築しています。私の MainWindow は、ウィンドウに合わせてサイズを変更したい地図の画像で構成されています。これは、ウィンドウが小さくなると画像が小さくなることを意味し、その逆も同様です。ユーザーがその画像上のポイントを選択すると、この機能を削除したいと思います。私はQtが初めてで、これを理解することができませんでした。これには QGraphicsView を使用しています。
c++ - グラフィックアイテムが境界線に対して配置されたときにQGraphicsSceneを大きくする
ユーザーがその中に青い正方形を作成できるようにするを使用して作成しましQGraphicsScene
た。mouseClickEvent
しかし、ユーザーがグラフィックシーンのスペースを使い果たしないように、アイテムが境界線に対して配置されたときにシーンを成長させたいと思います。
この場合、グラフィックシーンを大きくするための最良の方法は何ですか?