3

QTextEdit の行番号を表示するためのコンテナを追加しようとしています。これまで見てきたことから、最初のステップで QAbstractScrollArea を追加する必要があります。

問題は、QAbstractScrollArea を追加すると、QTextEdit が読み取り専用になることです。ほとんど読み取り専用で、テキストをドラッグ アンド ドロップできますが、テキストを入力するためのカーソルがありません。

アイデアはありますか?ありがとう!

mainWindow = QMainWindow()
textEdit = QTextEdit(mainWindow)
textDocument = QTextDocument(textEdit)
...
# adding some text do textEdit
...

scrollArea = QAbstractScrollArea()
scrollArea.setViewport(textEdit)
scrollArea.setViewportMargins(20, 0, 0, 0)
mainWindow.setCentralWidget(scrollArea)
mainWindow.show()
4

2 に答える 2

1

あなたが電話するべきかどうか、私にはまったくわかりませんsetViewport

QTextEditは既に から継承されQAbstractScrollAreaているため、その左側に余白を確保し、行番号をペイントするか、その余白に行番号を表示する静的ウィジェットを配置するだけです。

ドキュメント (C++) には、まさにそれを行う例が既にあります: Qt Code Editor example

于 2013-01-24T22:55:25.290 に答える
-1

TextEdit は QMainWindow ウィジェットにありますが、QScrollArea は QMainWidow::centralWidget() にあることに注意してください。これは別のウィジェットで、QMainWindow のすぐ上にある centralWidget です。これは、実際に QTextEdit 領域をクリックすると、QTextEdit ではなく scrollArea ウィジェットをクリックすることを意味します。

このコードを試してください:

    mainWindow = QMainWindow()    
    scrollArea = QAbstractScrollArea()
    scrollArea.setViewport(textEdit)
    scrollArea.setViewportMargins(20, 0, 0, 0)
    mainWindow.setCentralWidget(scrollArea)

    textEdit = QTextEdit(mainWindow.centralWidget())
    textDocument = QTextDocument(textEdit)
    ...
    # adding some text do textEdit
    ...

    mainWindow.show()
于 2013-01-24T17:20:10.883 に答える