0

の境界線をマークし、その内部でサイズ変更可能にして、Microsoftペイントに似たものを作成する方法を見つけようとしています。QGraphicsSceneQGraphicsView


言い換えれば、私の現在QGraphicsViewは次のようになります。

現在のQGraphicsView

しかし、赤いボックスで示されているように、私の画像はこれだけ大きいです。

赤いボックスで示された画像サイズ。 背景は画像の一部としてカウントされません。

私はこのようになりたいですQGraphicsView小さな黒いボックスは、キャンバスのサイズを変更するためのコーナーグラバーです):

最終的なサイズ変更可能なQGraphicsView


機能的には、MSペイントに似たものにしたいと思いますMSペイントの例

キャンバス(シーン)はサイズ変更可能で、ウィンドウ(ビュー)のスクロールバーは必要に応じて表示されます。キャンバスの後ろに青い背景色(灰色の無地の背景)が表示されます。

これを達成するにはどうすればよいですか?


灰色の背景を取得するために、私はとを試してきましQGraphicsView.setBackgroundBrush()QGraphicsScene.setBackgroundBrush()QGraphicsViewの背景ブラシが設定されている場合、その背景ブラシが完全に上書きされることを学びましたQGraphicsScene。の背景ブラシのみを設定した場合でもQGraphicsScene、その背景ブラシは画像の元の境界を超えて広がります。


これが私のテストコードへのリンクです。ヘルプをいただければ幸いです。

4

1 に答える 1

0

私はあなたのコンストラクターと格闘しなければなりません...それがWindowsで動作するかどうかはわかりませんが、Linuxで動作するようにする必要があります。試す :

def setPixmap(self, pixmap):
    if self.pixmap_item:
        self.removeItem(self.pixmap_item)

    self.pixmap_item = self.addPixmap(pixmap)

    self.setPixBackGround()

def setPixBackGround(self):
    # put Background rect for image
    pixR = self.pixmap_item.pixmap().rect()
    bgRectangle = self.addRect(pixR.x()-10, pixR.y()-10, 
                    pixR.width()+20, pixR.height()+20)
    # set color and Z value to put it behind image
    bgColor = QColor(58, 176, 176)
    bgRectangle.setBrush(bgColor)
    bgRectangle.setZValue(-.1)
    # take coordinates for brabbers
    bgR = bgRectangle.rect()
    grab1R = QRect(-5,-5,10,10)
    # put grabbers as wish...
    grab1 = self.addRect(grab1R)
    grab1.setPos(bgR.topLeft())

    grab2 = self.addRect(grab1R)
    grab2.setPos(bgR.topRight())
    # ....etc....
于 2013-03-07T12:56:28.733 に答える