LVRS Storyboard Frame
components/control/CodeEditor.svx
Path: components/control/CodeEditor.svx
CodeEditor
위치: qml/components/control/input/CodeEditor.qml
CodeEditor는 코드 입력을 위해 특화된 스니펫 지향 편집기입니다 ( PlainText + NoWrap ).
목적
- 코드 입력을 단축값 기본값으로 결정적으로 유지하십시오.
- 선택적 스니펫 헤더 메타데이터를 제공하십시오.
- 대용량 콘텐츠에서도 안정적인 부품 높이를 유지하십시오.
API
핵심 편집:
text,placeholderText,readOnlycursorPosition,selectionStart,selectionEndselectByMouse,persistentSelection,overwriteMode
스니펫 헤더:
snippetTitlesnippetLanguageshowSnippetHeader
레이아웃:
fieldMinHeight,editorHeight,resolvedEditorHeightheaderHeight,headerSpacing,topInsetshowScrollBar,autoFocusOnPress
신호/방법:
textEdited(text)submitted(text)forceEditorFocus(),insertText(value),clear(),undo(),redo(),submit()
사용법
import LVRS 1.0 as LV
LV.CodeEditor {
snippetTitle: "main.cpp"
snippetLanguage: "C++"
text: "int main() { return 0; }"
}
동작 원리
- 계약에 따라
TextEdit.NoWrap와 일반 텍스트 형식을 사용합니다. - Monospace 글꼴 기본값은 플랫폼 인식입니다 (
Menloon macOS, 그 외에는Monospace). - 임베디드
InputMethodGuard및WheelScrollGuard는 텍스트 무결성과 중첩 스크롤 안전성을 제공합니다.
고급 예제: 읽기 전용 스니펫 보기
import LVRS 1.0 as LV
LV.CodeEditor {
snippetTitle: "Build Command"
snippetLanguage: "bash"
readOnly: true
text: "cmake -S . -B build && cmake --build build"
}
문제 해결
수평 스크롤이 일관되지 않은 것처럼 느껴진다면, 부모 스크롤 컨테이너가 WheelScrollGuard에 의해 보호되는지 확인하십시오.
레시피: 검증이 포함된 제어된 제출
import LVRS 1.0 as LV
LV.CodeEditor {
id: editor
snippetTitle: "policy.json"
onSubmitted: function(text) {
try {
JSON.parse(text)
savePolicy(text)
} catch (e) {
console.warn("invalid json")
}
}
}
운영 팁
감사성을 위해, CodeEditor 제출을 주변 뷰 모델의 명시적 버전 메타데이터와 결합하십시오.