2013-01-24 3 views
3

QTextEdit의 행 번호를 표시하기위한 컨테이너를 추가하려고합니다. 지금까지 내가 본 것에서는 첫 번째 단계에서 QAbstractScrollArea를 추가해야합니다.QScrollArea QTextEdit을 읽기 전용으로 만듭니다.

문제는 내가 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() 

답변

1

난 당신이 모든 setViewport를 호출해야 확실하지 않다 :

이 코드를 사용해보십시오.

QTextEdit은 이미 QAbstractScrollArea에서 상속되므로 왼쪽에 여백을 예약하고 줄 번호를 칠하거나 그 여백에 줄 번호를 표시하는 정적 위젯을 배치해야합니다.

이미 문서 (C++)에 다음과 같은 예가 있습니다 : Qt Code Editor example.

+0

네, 그게 문제 였고,'setViewport'를 부를 필요가 없었습니다. 나는 그 예제를 PyQt로 포팅하려고 시도했는데, 지금까지는 다소 시간이 걸릴 것으로 보인다. 감사. –

-1

주, 그 QMainWidow :: centralWidget에 당신의 QMainWindow 위젯에있는 텍스트 편집기,하지만 QScrollArea(). 그것은 다른 위젯이고 QMainWindow 바로 위의 centralWidget입니다. 사실 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() 
+0

감사합니다.하지만 여전히 작동하지 않습니다. 'textEdit.setText ("...")'로'textEdit'에 텍스트를 삽입 할 수 있습니다. 'QTextCursor'를 사용하여 텍스트를 삽입하면 여전히 볼 수 없습니다. 이미 설정된 텍스트와의 유일한 상호 작용은 드래그 앤 드롭입니다. –

+0

@DaddyPumpkin textEdit.setDocument (textDocument) – Milovidov

+0

나는 그것을했는데,'textDocument'를'textEdit'에 추가했지만 나중에 편집 할 수는 없습니다. –

관련 문제