QScrollArea只读取QTextEdit

时间:2013-01-24 15:21:29

标签: qt pyqt qtextedit

我正在尝试添加一个容器来显示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()

2 个答案:

答案 0 :(得分:1)

我不确定你应该致电setViewport

QTextEdit已经从QAbstractScrollArea继承,所以您只需保留左侧的边距,然后绘制行号或放置一个静态小部件,该小部件将显示行号裕度。

文档(在C ++中)已经有一个例子:Qt Code Editor example

答案 1 :(得分:-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()