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