1

QTextEdit ウィジェットを含む GUI を開発しようとしています。GUI が読み込まれると、データが固定幅の列にあるファイルからデータが取り込まれます。

ユーザーが QTextEdit ウィジェットのさまざまなポイントをクリックして、新しい列の開始位置をマークできるようにしたいのですが、それらの位置でウィジェットに垂直線を描画して列を表示したいと考えています。

私の GUI init () メソッドには、テキスト ウィジェットから paintEvent をインターセプトする次の行がありました。

self.mytextviewer.paintEvent = self.handlePaintEvent

そして、私は handlePaintEvent() メソッドを持っていました:

def handlePaintEvent(self, event):
    painter = QPainter(self.mytextviewer)
    pen = QPen(Qt.SolidLine)
    pen.setColor(Qt.black)
    pen.setWidth(1)
    painter.setPen(pen)
    painter.drawLine(20, 0, 20, 100)

しかし、コードを実行しようとすると、ペインターがアクティブでないという QPainter エラーが発生し始めました。

次に、QTextEdit をサブクラス化し、上記と基本的に同じコードをサブクラスの paintEvent() メソッドに追加して、別の方向を試みました。ただし、まだエラーが発生しています。

次に、paintEvent() メソッドにpainter.begin(self)andを追加しようとしましたが、それでも満足できませんでした。painter.end()

また、カスタム paintEvent() メソッドを追加したため、ウィジェットに最初に表示されていたテキストが表示されなくなりました。

私はここで本当にばかげたことをしていますか、それともこれを行うためのより良い/簡単な方法はありますか?

ありがとう。

4

1 に答える 1