Тип QML TextEdit
Отображает несколько строк редактируемого форматированного текста Подробнее...
| Оператор импорта: | import QtQuick 2.5 |
| Наследуется от: | |
| Наследует: |
Свойства
- activeFocusOnPress : bool
- baseUrl : url
- bottomPadding : real
- canPaste : bool
- canRedo : bool
- canUndo : bool
- color : color
- contentHeight : real
- contentWidth : real
- cursorDelegate : Component
- cursorPosition : int
- cursorRectangle : rectangle
- cursorVisible : bool
- effectiveHorizontalAlignment : перечисление
- font.bold : bool
- font.capitalization : перечисление
- font.family : строка
- font.italic : bool
- font.letterSpacing : real
- font.pixelSize : int
- font.pointSize : real
- font.strikeout : bool
- font.styleName : строка
- font.underline : bool
- font.weight : перечисление
- font.wordSpacing : real
- horizontalAlignment : перечисление
- hoveredLink : строка
- inputMethodComposing : bool
- inputMethodHints : перечисление
- leftPadding : real
- length : int
- lineCount : int
- mouseSelectionMode : перечисление
- padding : real
- persistentSelection : bool
- readOnly : bool
- renderType : перечисление
- rightPadding : real
- selectByKeyboard : bool
- selectByMouse : bool
- selectedText : строка
- selectedTextColor : цвет
- selectionColor : цвет
- selectionEnd : int
- selectionStart : int
- text : строка
- textDocument : TextDocument
- textFormat : перечисление
- textMargin : real
- topPadding : real
- verticalAlignment : перечисление
- wrapMode : перечисление
Сигналы
- editingFinished()
- linkActivated(строка link)
- linkHovered(строка link)
Методы
- void append(строка text)
- copy()
- cut()
- deselect()
- строка getFormattedText(int start, int end)
- строка getText(int start, int end)
- insert(int position, строка text)
- isRightToLeft(int start, int end)
- linkAt(real x, real y)
- moveCursorSelection(int position, SelectionMode mode)
- paste()
- int positionAt(int x, int y)
- прямоугольник positionToRectangle(position)
- redo()
- строка remove(int start, int end)
- select(int start, int end)
- selectAll()
- selectWord()
- undo()
Подробное описание
Элемент TextEdit отображает блок редактируемого форматированного текста.
Он может отображать как обычный, так и форматированный текст. Например:
TextEdit {
width: 240
text: "<b>Hello</b> <i>World!</i>"
font.family: "Helvetica"
font.pointSize: 20
color: "blue"
focus: true
}
Установив focus в true , вы активируете возможность элемента TextEdit получать фокус клавиатуры.
Обратите внимание, что TextEdit не реализует прокрутку, слежение за курсором или другие действия, специфичные для внешнего вида. Например, чтобы добавить прокрутку с использованием flickable, которая следует за курсором:
Flickable {
id: flick
width: 300; height: 200;
contentWidth: edit.paintedWidth
contentHeight: edit.paintedHeight
clip: true
function ensureVisible(r)
{
if (contentX >= r.x)
contentX = r.x;
else if (contentX+width <= r.x+r.width)
contentX = r.x+r.width-width;
if (contentY >= r.y)
contentY = r.y;
else if (contentY+height <= r.y+r.height)
contentY = r.y+r.height-height;
}
TextEdit {
id: edit
width: flick.width
height: flick.height
focus: true
wrapMode: TextEdit.Wrap
onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
}
} Конкретный вид может использовать плавную прокрутку (например, используя SmoothedAnimation), может иметь видимую полосу прокрутки или полосу прокрутки, которая появляется/исчезает, чтобы показать текущее положение.
Поддержка буфера обмена обеспечивается функциями cut(), copy() и paste(). Выбор текста можно обрабатывать традиционным «мышиным» способом, установив selectByMouse или полностью из QML, манипулируя selectionStart и selectionEnd, или используя selectAll() или selectWord().
Вы можете переводить позиции курсора (символы от начала документа) в пиксельные точки, используя positionAt() и positionToRectangle().
Документация по свойствам
activeFocusOnPress : bool
Указывает, должен ли элемент TextEdit получить активный фокус при нажатии мыши. По умолчанию значение равно true.
baseUrl : url
Это свойство задаёт базовый URL, используемый для разрешения относительных URL внутри текста.
Значение по умолчанию — URL файла QML, инициализирующего элемент TextEdit.
bottomPadding : real
Эти свойства определяют отступы вокруг содержимого. Это пространство зарезервировано дополнительно к contentWidth и contentHeight.
Это свойство QML было добавлено в Qt 5.6.
canPaste : bool
Возвращает true, если TextEdit разрешено писать и содержимое буфера обмена подходит для вставки в TextEdit.
canRedo : bool
Возвращает true, если TextEdit разрешено писать и существуют отменённые операции, которые можно повторить.
canUndo : bool
Возвращает true, если TextEdit разрешено писать и существуют предыдущие операции, которые можно отменить.
color : color
Цвет текста.
// green text using hexadecimal notation
TextEdit { color: "#00FF00" } // steelblue text using SVG color name
TextEdit { color: "steelblue" } contentHeight : real
Возвращает высоту текста, включая высоту, превышающую высоту, которая покрывается, если текст не помещается в заданную высоту.
contentWidth : real
Возвращает ширину текста, включая ширину, превышающую ширину, которая покрывается из-за недостаточной обёртывания, если свойство wrapMode установлено.
cursorDelegate : Component
Делегат для курсора в TextEdit.
Если вы зададите cursorDelegate для TextEdit, этот делегат будет использоваться для рисования курсора вместо стандартного курсора. Экземпляр делегата будет создан и управляться текстовым полем, когда потребуется курсор, а свойства x и y экземпляра делегата будут установлены так, чтобы быть на один пиксель перед верхним левым углом текущего символа.
Обратите внимание, что корневой элемент компонента делегата должен быть элементом QQuickItem или элементом, производным от QQuickItem.
cursorPosition : int
Положение курсора в TextEdit.
cursorRectangle : rectangle
Прямоугольник, в котором отображается стандартный курсор текста внутри текстового поля. Только для чтения.
Положение и высота настраиваемого делегата курсора cursorDelegate обновляются автоматически для следования за cursorRectangle при его изменении. Ширина делегата не изменяется при изменении прямоугольника курсора.
cursorVisible : bool
Если true, текстовое поле отображает курсор.
Это свойство устанавливается и сбрасывается, когда текстовое поле получает фокус, но его также можно установить напрямую (полезно, например, если KeyProxy может пересылать ему клавиши).
effectiveHorizontalAlignment : enumeration
Устанавливает горизонтальное и вертикальное выравнивание текста в пределах ширины и высоты элемента TextEdit. По умолчанию выравнивание текста соответствует естественному выравниванию, например, текст, который читается слева направо, будет выровнен по левому краю.
Допустимые значения для horizontalAlignment:
Допустимые значения для verticalAlignment:
При использовании присоединённого свойства LayoutMirroring::enabled для отражения макетов приложения, горизонтальное выравнивание текста также будет отражено. Однако свойство horizontalAlignment останется неизменным. Для запроса эффективного горизонтального выравнивания TextEdit используйте свойство только для чтения effectiveHorizontalAlignment.
font.bold : bool
Устанавливает, является ли шрифт полужирным.
font.capitalization : enumeration
Устанавливает регистр текста.
- Font.MixedCase — это обычный вариант отображения текста, где никакие изменения регистра не применяются.
- Font.AllUppercase — это изменяет текст, отображая его заглавными буквами.
- Font.AllLowercase — это изменяет текст, отображая его строчными буквами.
- Font.SmallCaps — это изменяет текст, отображая его в стиле small-caps.
- Font.Capitalize — это изменяет текст, отображая первую букву каждого слова заглавной.
TextEdit { text: "Hello"; font.capitalization: Font.AllLowercase } font.family : string
Устанавливает имя семейства шрифтов.
Имя семейства не учитывает регистр и может необязательно включать имя производителя, например, "Helvetica [Cronyx]". Если семейство доступно от более чем одного производителя, и производитель не указан, выбирается произвольный производитель. Если семейство недоступно, семейство будет установлено с использованием алгоритма сопоставления шрифтов.
font.italic : bool
Устанавливает, имеет ли шрифт стиль курсива.
font.letterSpacing : real
Устанавливает интерлиньяж шрифта.
Интерлиньяж изменяет стандартный интерлиньяж между отдельными буквами в шрифте. Положительное значение увеличивает интерлиньяж на соответствующее количество пикселей; отрицательное значение уменьшает интерлиньяж.
font.pixelSize : int
Устанавливает размер шрифта в пикселях.
Использование этой функции делает шрифт зависимым от устройства. Используйте TextEdit::font.pointSize для установки размера шрифта независимо от устройства.
font.pointSize : real
Устанавливает размер шрифта в пунктах. Размер шрифта должен быть больше нуля.
font.strikeout : bool
Устанавливает, имеет ли шрифт стиль зачёркивания.
font.styleName : string
Устанавливает имя стиля шрифта.
Имя стиля не учитывает регистр. Если установлено, шрифт будет сопоставлен с именем стиля вместо свойств шрифта font.weight, font.bold и font.italic.
Это свойство QML было добавлено в Qt 5.6.
font.underline : bool
Устанавливает, подчеркнут ли текст.
font.weight : enumeration
Устанавливает толщину шрифта.
Толщина может быть одной из:
- Font.Thin
- Font.Light
- Font.ExtraLight
- Font.Normal — по умолчанию
- Font.Medium
- Font.DemiBold
- Font.Bold
- Font.ExtraBold
- Font.Black
TextEdit { text: "Hello"; font.weight: Font.DemiBold } font.wordSpacing : real
Устанавливает интерлиньяж для шрифта.
Интерлиньяж изменяет стандартный интерлиньяж между отдельными словами. Положительное значение увеличивает интерлиньяж на соответствующее количество пикселей, а отрицательное значение уменьшает интерлиньяж.
horizontalAlignment : enumeration
Устанавливает горизонтальное и вертикальное выравнивание текста в пределах ширины и высоты элемента TextEdit. По умолчанию выравнивание текста соответствует естественному выравниванию, например, текст, который читается слева направо, будет выровнен по левому краю.
Допустимые значения для horizontalAlignment:
Допустимые значения для verticalAlignment:
При использовании присоединённого свойства LayoutMirroring::enabled для отражения макетов приложения, горизонтальное выравнивание текста также будет отражено. Однако свойство horizontalAlignment останется неизменным. Для запроса эффективного горизонтального выравнивания TextEdit используйте свойство только для чтения effectiveHorizontalAlignment.
hoveredLink : string
Это свойство содержит строку ссылки, когда пользователь наводит курсор на ссылку, встроенную в текст. Ссылка должна быть в формате форматированного текста или HTML, а строка ссылки предоставляет доступ к конкретной ссылке.
Это свойство QML было добавлено в Qt 5.2.
См. также linkHovered и linkAt().
inputMethodComposing : bool
Это свойство указывает, содержит ли TextEdit частичный ввод текста от ввода с помощью метода ввода.
Во время составления ввода метод ввода может полагаться на события мыши или клавиш от TextEdit для редактирования или подтверждения частичного текста. Это свойство можно использовать для определения того, когда следует отключать обработчики событий, которые могут мешать правильной работе метода ввода.
inputMethodHints : перечисление
Предоставляет подсказки методу ввода о ожидаемом содержании текстового поля и о том, как он должен работать.
Значение представляет собой побитовое сочетание флагов или Qt.ImhNone, если подсказки не заданы.
Флаги, изменяющие поведение:
- Qt.ImhHiddenText - Символы должны быть скрыты, как обычно используется при вводе паролей.
- Qt.ImhSensitiveData - Вводимый текст не должен храниться активным методом ввода в любом постоянном хранилище, например, в предсказательном словаре пользователя.
- Qt.ImhNoAutoUppercase - Метод ввода не должен пытаться автоматически переключаться на заглавные буквы, когда предложение заканчивается.
- Qt.ImhPreferNumbers - Предпочтение отдаётся числам (но не обязательно).
- Qt.ImhPreferUppercase - Предпочтение отдаётся заглавным буквам (но не обязательно).
- Qt.ImhPreferLowercase - Предпочтение отдаётся строчным буквам (но не обязательно).
- Qt.ImhNoPredictiveText - Не использовать предсказательный текст (т.е. поиск по словарю) во время набора.
- Qt.ImhDate - Текстовое поле работает как поле даты.
- Qt.ImhTime - Текстовое поле работает как поле времени.
Флаги, ограничивающие ввод (исключительные флаги):
- Qt.ImhDigitsOnly - Разрешены только цифры.
- Qt.ImhFormattedNumbersOnly - Разрешен только ввод чисел. Это включает десятичную точку и знак минус.
- Qt.ImhUppercaseOnly - Разрешен только ввод заглавных букв.
- Qt.ImhLowercaseOnly - Разрешен только ввод строчных букв.
- Qt.ImhDialableCharactersOnly - Разрешены только символы, подходящие для набора номера телефона.
- Qt.ImhEmailCharactersOnly - Разрешены только символы, подходящие для адресов электронной почты.
- Qt.ImhUrlCharactersOnly - Разрешены только символы, подходящие для URL-адресов.
Маски:
- Qt.ImhExclusiveInputMask - Эта маска возвращает ненулевое значение, если используется любой из исключительных флагов.
leftPadding : вещественное
Эти свойства содержат отступы вокруг содержимого. Это пространство резервируется дополнительно к contentWidth и contentHeight.
Это свойство QML было введено в Qt 5.6.
length : целое
Возвращает общее количество символов простого текста в элементе TextEdit.
Поскольку это число не включает какие-либо форматирующие метки, оно может отличаться от длины строки, возвращаемой свойством text.
Это свойство может быть быстрее, чем запрос длины свойства text, так как оно не требует копирования или преобразования внутренних данных строки TextEdit.
lineCount : целое
Возвращает общее количество строк в элементе TextEdit.
mouseSelectionMode : перечисление
Определяет, как должен выбираться текст с помощью мыши.
- TextEdit.SelectCharacters - Выбор обновляется отдельными символами. (По умолчанию)
- TextEdit.SelectWords - Выбор обновляется целыми словами.
Это свойство применяется только при selectByMouse равно true.
padding : вещественное
Эти свойства содержат отступы вокруг содержимого. Это пространство резервируется дополнительно к contentWidth и contentHeight.
Это свойство QML было введено в Qt 5.6.
persistentSelection : bool
Указывает, должен ли TextEdit сохранять видимость выделения, когда он теряет активный фокус на другой элемент в сцене. По умолчанию это значение равно false.
readOnly : bool
Указывает, может ли пользователь взаимодействовать с элементом TextEdit. Если это свойство установлено в true, текст нельзя редактировать с помощью пользовательского взаимодействия.
По умолчанию это свойство равно false.
renderType : перечисление
Переопределить тип рендеринга по умолчанию для этого компонента.
Поддерживаемые типы рендеринга:
- Text.QtRendering - по умолчанию
- Text.NativeRendering
Выберите Text.NativeRendering, если вы предпочитаете, чтобы текст выглядел нативно на целевой платформе, и вам не нужны расширенные функции, такие как преобразование текста. Использование таких функций в сочетании с типом рендеринга NativeRendering даст плохие и иногда размытые результаты.
rightPadding : вещественное
Эти свойства содержат отступы вокруг содержимого. Это пространство резервируется дополнительно к contentWidth и contentHeight.
Это свойство QML было введено в Qt 5.6.
selectByKeyboard : bool
По умолчанию равно true, когда редактор редактируется, и false, когда он только для чтения.
Если true, пользователь может использовать клавиатуру для выбора текста, даже если редактор только для чтения. Если false, пользователь не может использовать клавиатуру для выбора текста, даже если редактор редактируется.
Это свойство QML было введено в Qt 5.1.
См. также readOnly.
selectByMouse : bool
По умолчанию равно false.
Если true, пользователь может использовать мышь для выбора текста каким-то платформенно-специфичным способом. Обратите внимание, что для некоторых платформ это может быть неподходящее взаимодействие; это может конфликтовать с тем, как текст должен вести себя внутри Flickable, например.
selectedText : строка
Это свойство только для чтения предоставляет текст, который в данный момент выбран в текстовом поле.
Это эквивалентно следующему фрагменту кода, но быстрее и удобнее в использовании.
//myTextEdit is the id of the TextEdit
myTextEdit.text.toString().substring(myTextEdit.selectionStart,
myTextEdit.selectionEnd); selectedTextColor : цвет
Цвет выделенного текста, используемый в выделениях.
selectionColor : цвет
Цвет выделения текста, используемый под выделениями.
selectionEnd : целое
Положение курсора после последнего символа в текущем выделении.
Это свойство только для чтения. Чтобы изменить выделение, используйте select(start,end), selectAll() или selectWord().
См. также selectionStart, cursorPosition и selectedText.
selectionStart : целое
Положение курсора перед первым символом в текущем выделении.
Это свойство только для чтения. Чтобы изменить выделение, используйте select(start,end), selectAll() или selectWord().
См. также selectionEnd, cursorPosition и selectedText.
text : строка
Текст для отображения. Если формат текста AutoText, текстовое поле автоматически определит, следует ли обрабатывать текст как форматированный текст. Это определение производится с помощью Qt::mightBeRichText().
Свойство text в основном подходит для установки начального содержимого и обработки изменений относительно небольшого текстового содержимого. Методы append(), insert() и remove() обеспечивают более точный контроль и значительно лучшую производительность при модификации, особенно большого форматированного текстового содержимого.
textDocument : TextDocument
Возвращает QQuickTextDocument этого TextEdit. Его можно использовать для реализации подсветки синтаксиса с помощью QSyntaxHighlighter.
Это свойство QML было введено в Qt 5.1.
См. также QQuickTextDocument.
textFormat : перечисление
Способ отображения свойства text.
По умолчанию TextEdit.PlainText. Если формат текста TextEdit.AutoText, текстовое поле автоматически определит, следует ли обрабатывать текст как форматированный текст. Это определение производится с помощью Qt::mightBeRichText().
Column {
TextEdit {
font.pointSize: 24
text: "<b>Hello</b> <i>World!</i>"
}
TextEdit {
font.pointSize: 24
textFormat: TextEdit.RichText
text: "<b>Hello</b> <i>World!</i>"
}
TextEdit {
font.pointSize: 24
textFormat: TextEdit.PlainText
text: "<b>Hello</b> <i>World!</i>"
}
} |
textMargin : вещественное
Отступ, в пикселях, вокруг текста в TextEdit.
topPadding : real
Эти свойства содержат отступы вокруг содержимого. Это пространство зарезервировано в дополнение к contentWidth и contentHeight.
Это свойство QML было введено в Qt 5.6.
verticalAlignment : enumeration
Устанавливает горизонтальное и вертикальное выравнивание текста в пределах ширины и высоты элемента TextEdit. По умолчанию выравнивание текста соответствует естественному выравниванию текста, например, текст, читаемый слева направо, будет выровнен по левому краю.
Допустимые значения для horizontalAlignment:
Допустимые значения для verticalAlignment:
При использовании присоединённого свойства LayoutMirroring::enabled для отражения макетов приложения, горизонтальное выравнивание текста также будет отражаться. Однако свойство horizontalAlignment останется неизменным. Для запроса эффективного горизонтального выравнивания TextEdit используйте только для чтения свойство effectiveHorizontalAlignment.
wrapMode : enumeration
Установите это свойство для обрезания текста по ширине элемента TextEdit. Текст будет обрезаться только в случае явного задания ширины.
- TextEdit.NoWrap — обрезка не будет выполняться. Если текст содержит недостаточно символов новой строки, то implicitWidth превысит заданную ширину.
- TextEdit.WordWrap — обрезка выполняется только по границам слов. Если слово слишком длинное, implicitWidth превысит заданную ширину.
- TextEdit.WrapAnywhere — обрезка выполняется в любой точке строки, даже если она находится посреди слова.
- TextEdit.Wrap — если возможно, обрезка происходит на границе слова; в противном случае она произойдёт в соответствующей точке строки, даже посреди слова.
По умолчанию установлено TextEdit.NoWrap. Если вы задаёте ширину, рассмотрите использование TextEdit.Wrap.
Документация сигналов
editingFinished()
Этот сигнал излучается, когда текстовое поле теряет фокус.
Соответствующий обработчик — onEditingFinished.
Этот сигнал QML был введён в Qt 5.6.
linkActivated(string link)
Этот сигнал излучается, когда пользователь нажимает на ссылку, встроенную в текст. Ссылка должна быть в формате форматированного текста или HTML, а строка link предоставляет доступ к конкретной ссылке.
Соответствующий обработчик — onLinkActivated.
linkHovered(string link)
Этот сигнал излучается, когда пользователь наводит курсор на ссылку, встроенную в текст. Ссылка должна быть в формате форматированного текста или HTML, а строка link предоставляет доступ к конкретной ссылке.
Соответствующий обработчик — onLinkHovered.
Этот сигнал QML был введён в Qt 5.2.
См. также hoveredLink и linkAt().
Документация методов
void append(string text)
Добавляет новый абзац с text в конец TextEdit.
Для добавления без вставки нового абзаца вызовите myTextEdit.insert(myTextEdit.length, text).
Этот метод QML был введён в Qt 5.2.
copy()
Копирует выделенный текст в буфер обмена системы.
cut()
Перемещает выделенный текст в буфер обмена системы.
deselect()
Удаляет выделение текста.
string getFormattedText(int start, int end)
Возвращает часть текста между позициями start и end.
Возвращаемый текст будет отформатирован согласно свойству textFormat.
string getText(int start, int end)
Возвращает часть текста между позициями start и end.
Возвращаемый текст не включает форматирование форматированного текста.
insert(int position, string text)
Вставляет text в TextEdit по позиции.
isRightToLeft(int start, int end)
Возвращает true, если естественное направление чтения текста редактора между позициями start и end — справа налево.
linkAt(real x, real y)
Возвращает строку ссылки в точке x, y в координатах содержимого или пустую строку, если в этой точке нет ссылки.
Этот метод QML был введён в Qt 5.3.
См. также hoveredLink.
moveCursorSelection(int position, SelectionMode mode = TextEdit.SelectCharacters)
Перемещает курсор в position и обновляет выделение в соответствии с необязательным параметром mode. (Чтобы только переместить курсор, установите свойство cursorPosition.)
При вызове этого метода дополнительно устанавливается либо selectionStart, либо selectionEnd (в зависимости от того, где был курсор ранее), в заданную позицию. Это позволяет легко расширять и сокращать выделенный диапазон текста.
Режим выделения определяет, обновляется ли выделение посимвольно или по словам. Если не указано, режим выделения по умолчанию — TextEdit.SelectCharacters.
- TextEdit.SelectCharacters — Устанавливает либо selectionStart, либо selectionEnd (в зависимости от того, где был курсор ранее) в указанную позицию.
- TextEdit.SelectWords — Устанавливает selectionStart и selectionEnd для включения всех слов между заданной позицией и предыдущей позицией курсора. Частично попадающие в диапазон слова включаются.
Например, рассмотрите эту последовательность вызовов:
cursorPosition = 5 moveCursorSelection(9, TextEdit.SelectCharacters) moveCursorSelection(7, TextEdit.SelectCharacters)
Это перемещает курсор в позицию 5, расширяет конец выделения с 5 до 9, а затем сокращает конец выделения с 9 до 7, оставляя текст с позиции 5 до 7 выделенным (6-й и 7-й символы).
Та же последовательность с TextEdit.SelectWords расширит начало выделения до границы слова перед или на позиции 5 и расширит конец выделения до границы слова на или после позиции 9.
paste()
Заменяет выделенный текст содержимым буфера обмена системы.
int positionAt(int x, int y)
Возвращает позицию текста, ближайшую к пиксельной позиции (x, y).
Позиция 0 находится перед первым символом, позиция 1 — после первого, но перед вторым символом и так далее до позиции text.length, которая находится после всех символов.
rectangle positionToRectangle(position)
Возвращает прямоугольник в заданной position в тексте. Свойства x, y и height соответствуют курсору, который описывает эту позицию.
redo()
Повторяет последнее действие, если повторение доступно (доступно).
string remove(int start, int end)
Удаляет часть текста между позициями start и end из TextEdit.
select(int start, int end)
Выделяет текст от start до end.
Если start или end находятся вне диапазона, выделение не изменяется.
После вызова этого метода selectionStart станет меньшим, а selectionEnd — большим (независимо от порядка, переданного в этот метод).
См. также selectionStart и selectionEnd.
selectAll()
Выделяет весь текст.
selectWord()
Выделяет слово, ближайшее к текущей позиции курсора.
END_OF_DOCUMENT_MARKERundo()
Отменяет последнюю операцию, если отмена доступна. Снимает выделение, если оно было, и обновляет начальную позицию выделения до текущей позиции курсора.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qml-qtquick-textedit.html