2010-12-19 5 views
2

일부 코드를 편집하는 간단한 대화 상자를 구현하려고합니다. QPlainTextEdit을 기반으로하는 this을 사용합니다. 그러나 탭을 코드 텍스트에 삽입 할 수 없습니다. 주된 이유는 코드 편집기에서 코드에 표시된 것처럼 대화 상자를 표시 할 수 있기 때문입니다. Tab 버튼을 누르면 대화 상자가 닫히고 다시 열립니다.QPlainTextEdit의 Qt 코드 편집기 코드 탭을 사용하는 방법

CodeEditor* editor = new CodeEditor(this); 
editor->setWindowFlags(Qt::Dialog); 
editor->setMinimumSize(400, 400); 
editor->show(); 

답변

4

감사들,

나는 문제를 해결하고 내가 질문에 언급하지 않은 부분에 대해 완전히이다. 이 코드는 qtpropertybrowser 코드베이스의 일부입니다. 질문에서 지적한 코드 편집 위젯을 열 속성 편집기를 추가하려고합니다. qt 등록 정보 코드베이스를 드릴 다운하면 해당 탭 키가 eventFilter에 의해 필터링되므로 무시된다는 것을 알았습니다. 이 부분을 바꿀 때. 나는 그 문제를 해결했다.

하지만 편집자가 닫히고 다시 열리는 문제를 해결할 수 없습니다. 그렇게 빨리됩니다. 그리고 다음과 같이 에러 메시지가 출력됩니다. QWidget :: setTabOrder : 'first'와 'second'는 같은 창에 있어야합니다.

0

대신 Qt::DialogQt::Window를 사용하여 시도하고 QWidget::setWindowModality()를 사용하여 응용 프로그램 모달을합니다.

+0

이것은 작동하지 않습니다. 탭 버튼을 클릭하면 편집기가 닫히고 다시 열립니다. 그렇게 빨리됩니다. 그리고 다음과 같이 에러 메시지가 출력됩니다. QWidget :: setTabOrder : 'first'와 'second'는 같은 창에 있어야합니다. – Oki

0

QDialog에 OK와 Cancel 버튼이있는 편집기를 내장하고 싶습니다. 또한 QPlainTextEdit :: tabChangesFocus()가 false인지 확인하십시오.

+0

이것은 작동하지 않습니다. 탭 버튼을 클릭하면 편집기가 닫히고 다시 열립니다. 그렇게 빨리됩니다. 그리고 오류 메시지는 다음과 같이 출력됩니다. QWidget :: setTabOrder : 'first'와 'second'는 같은 창에 있어야합니다. – Oki

+0

이상합니다. 그래서 setTabChangesFocus (false)는 아무 효과가 없습니까? 어느 플랫폼에 있습니까? –