1

背景: Python と pyqt を使用してグリッド ツールを作成しようとしています。具体的には、graphicsView/graphicsScene の組み合わせを使用して、ユーザーがグリッドのセクションを配置および編集できるようにしたいと考えています。このコンテキストでは、グリッドは単に垂線の集まりです。

何かのようなもの:
ここに画像の説明を入力

質問:行のコレクションを 1 つのオブジェクトにグループ化して、行のコレクションが単一のオブジェクトとして機能するようにするにはどうすればよいですか (つまり、コンテキスト メニュー、ドラッグなど)。

現在のコード: (グラフィックス クラスのみ)

from PyQt4 import QtGui, QtCore

class graphicsView(QtGui.QGraphicsView):
    def __init__(self,parent=None):
        super(graphicsView, self).__init__(parent)
        self.parent=parent
    def wheelEvent(self,event):
        super(graphicsView, self).wheelEvent(event)
        factor = 1.2
        if event.delta()<0:
            factor = 1.0/factor
        self.scale(factor,factor)

class graphicsScene(QtGui.QGraphicsScene):
    def __init__(self,parent=None):
        super(graphicsScene, self).__init__(parent)
        self.meshPen=QtGui.QPen(QtCOre.Qt.blue, 1, QtCore.Qt.SolidLine)
    def newGrid(self, xmax,ymax,xcells,ycells,xmin=0,ymin=0):
        for i in range(xcells+1):
            x=i*(xmax-xmin)/xcells-abs(xmin)
            self.addLine(x,ymin,x,ymax,self.meshPen)
        for j in range(ycells+1):
            y=j*(ymax-ymin)/ycells-abs(ymin)
            self.addLine(xmin,y,xmax,y,self.meshPen)

システム:
Python 2.7.2、PyQt4 4.9.5-2、Windows 7


考えられる解決策: (私の勝手な考え)

  1. インタラクションを処理するために、グリッドの上に非表示の長方形を実装します
4

1 に答える 1