問題タブ [qgraphicswidget]

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 に答える
907 参照

python - QGraphicsViewでrectを自動的に正しく設定するには?

解決しようとしているいくつかの問題があり、理解できません。私はこれまであまり作業したことがありませんが、画像をロードしようとしている をQGraphicsView作成し、を使用して、画像が行ごとに使用する列の数を動的に制御しようとしています。たとえば、16 個の画像があり、「デフォルトで持っている」4 に設定されている場合、4 行 4 列の画像が必要です。その部分は問題なく動作しているようですが、コードはあまり良くありません。カウントが変わるたびにそれらをすべて削除して再ロードしない限り、画像の列と行の数を制御する方法がわかりませんでした。アイテムを個別に削除するのに苦労したため、シーン全体をクリアしてすべてをリロードすることになりました。 QGraphicsViewQSpinBoxQSpinBox

私が今抱えている主な問題は、行と列の四角形を正しく自動的に設定することです。スクロールバーに空のスペースを残さずに、変更に合わせてシーンのサイズを変更しようとしています。

画像がロードされたときの開始時の様子を次に示します。

読み込まれた画像

QSpinBox少しスクロールするとこんな感じ。この時点では、空のスペースがたくさんある水平スクロールバーではなく、垂直スクロールバーのみが存在するはずです。

不要なスクロールバー

いくつかの試行錯誤の後、コードでこのようにシーンの四角形を設定できることがわかりましself.scene.setSceneRect(QRectF(self.graphics_widget.rect()))た。スクロールバーの問題を修正するために完全に機能しているように見えますが、何らかの方法で手動でトリガーした場合にのみ機能させることができ、この例では「Set Rect」ボタンの機能です。

ここに例があります。[Set Rect] ボタンをクリックすると、垂直スクロールバーが正しく削除され、水平スクロールバーが行全体の正確な幅になります。

適切な四角形

すべてが読み込まれた後にシーンの四角形を自動的に設定しようとすると、間違った幅と高さが得られますが、ボタンなどで手動で設定すると、何らかの理由で正しく機能します。

私が抱えている他の小さな問題は、上部の赤いバーがビューポート領域よりもさらに伸びることです。水平スクロールバーが表示されているときに水平にスクロールしようとすると、このようになり、幅全体を伸ばしたいと思います。

醜いトップバー

それは大したことではありませんが、私はそれを理解できると確信しています。私の主な関心事は、シーンの四角形を自動的に設定して、スクロールバーに空のスペースを残さずにすべてが正しく流れるようにすることです。
誰か提案はありますか?ありがとう。

これが私のコードです: