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 代码编辑器示例

于 2013-01-24T22:55:25.290 回答
-1

请注意,您的 TextEdit 位于 QMainWindow 小部件上,但 QScrollArea 位于 QMainWidow::centralWidget() 上。它是不同的小部件,而 centralWidget 就在 QMainWindow 之上。这意味着当您单击 QTextEdit 区域时,实际上您单击的是 scrollArea 小部件,而不是 QTextEdit。

试试这个代码:

    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 回答