В чём разница между Line Edit, Text Edit, Plain Text Edit и Text Browser?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 05.07.22 12:40
Оценка:
В чём разница между Line Edit, Text Edit, Plain Text Edit и Text Browser?
1613 г. = 2024 г.
Re: В чём разница между Line Edit, Text Edit, Plain Text Edit и Text Browser?
От: Pzz Россия https://github.com/alexpevzner
Дата: 05.07.22 14:49
Оценка: 4 (1) +2
Здравствуйте, RussianFellow, Вы писали:

RF>В чём разница между Line Edit, Text Edit, Plain Text Edit и Text Browser?


Ну я б сказал, бывает редактирование одной строчки, а бывает редактирование многострочного текста. Еще, текст может быть plain, т.е. чистые буквы, без разметки, а может быть rich, когда к буквам добавляется информация о шрифтах и т.п. А Browser, суда по названию, умеет текст только показывать, но не редактировать. Но зато более удобно на экране его размещает, ему же всякие кнопки про редактирование не нужны.
Re[2]: В чём разница между Line Edit, Text Edit, Plain Text Edit и Text Browser?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 07.07.22 14:07
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, RussianFellow, Вы писали:


RF>>В чём разница между Line Edit, Text Edit, Plain Text Edit и Text Browser?


Pzz>Ну я б сказал, бывает редактирование одной строчки, а бывает редактирование многострочного текста. Еще, текст может быть plain, т.е. чистые буквы, без разметки, а может быть rich, когда к буквам добавляется информация о шрифтах и т.п. А Browser, суда по названию, умеет текст только показывать, но не редактировать. Но зато более удобно на экране его размещает, ему же всякие кнопки про редактирование не нужны.


Ясно, понял. Спасибо!
1613 г. = 2024 г.
Re: В чём разница между Line Edit, Text Edit, Plain Text Edit и Text Browser?
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 07.07.22 17:29
Оценка: 8 (3) +1

Иерархия наследования


Здравствуйте, RussianFellow, Вы писали:
RF>В чём разница между Line Edit, Text Edit, Plain Text Edit и Text Browser?

Для начала взгляни на иерархию наследования, это важно.

QObject&QPaintDevice-QWidget-QLineEdit
QObject&QPaintDevice-QWidget-QFrame-QAbstractScrollArea-QPlainTextEdit
QObject&QPaintDevice-QWidget-QFrame-QAbstractScrollArea-QTextEdit
QObject&QPaintDevice-QWidget-QFrame-QAbstractScrollArea-QTextEdit-QTextBrowser


Виджет, рамка и прокрутка


QLineEdit имеет лишь функционал QWidget, нет QAbstractScrollArea, который построен на QFrame. Потому не будет унаследован функционал рамки или области прокрутки. Виджет это грубо говоря прямоугольная область на экране, рамка это визуальное оформление краёв, область прокрутки добавляет полосы прокрутки и соответствующий функционал.

QWidget
Класс QWidget является базовым классом всех объектов пользовательского интерфейса.

QFrame
Класс QFrame является базовым классом виджетов, которые могут иметь рамку.

QAbstractScrollArea
Виджет QAbstractScrollArea предоставляет область прокрутки с полосами прокрутки по запросу.


Редакторы текста


С однострочным текстом QLineEdit всё понятно, ему не нужна прокрутка.

QLineEdit
Виджет QLineEdit представляет собой однострочный текстовый редактор.


QPlainTextEdit имеет прокрутку и рамку, но самое главное он гораздо быстрее, чем форматированный текст QTextEdit. И это оптимизация заложена в функционал, что видно в непересекающемся наследовании.

QPlainTextEdit
Класс QPlainTextEdit предоставляет виджет, который используется для редактирования и отображения простого текста.


Соответственно QTextEdit создан для работы с форматированных текстом и из-за сложного форматирования документы даже в виде простого текста будут работать медленней, чем в QPlainTextEdit.

QTextEdit
Класс QTextEdit предоставляет виджет, который используется для редактирования и отображения как простого (plain), так и форматированного (rich) текста.

И последнее QTextBrowser, гипертекст это html, навигация это ссылки и переходы по ним. В него добавили функционал посредством наследования от QTextEdit.

QTextBrowser
Класс QTextBrowser предоставляет обозреватель форматированного (rich) текста с гипертекстовой навигацией.


Как выбрать редактор текста


А тут всё просто, если тебе нужно изменяемое текстовое поле в одну строку, то бери QLineEdit. Удобно для редактирования одной строки без переноса. Минимум места, не нужно будет отключать ту же прокрутку. Подходит для ввода всяких опций, сочетается с таблицами слоёв.


Если надо открывать большие текстовые документы в десятки мегабайт, то бери QPlainTextEdit. Здесь ещё нужно понимать, что дело вовсе не в синтаксической подсветке, которую можно установить за счёт ExtraSelection. То есть если тебе нужен редактор кода для IDE, то QPlainTextEdit всё ещё подходит. Для примера, это такие форматы как *.txt, *.hpp, *.cpp, *.xml.

Отличие же QTextEdit в том, что он может отображать списки, таблицы, изображения. То есть если тебе нужен HTML, то бери его. А если нужна ещё навигация, тогда его прокачанную версию QTextBrowser. Формат *.html и так далее.

Чтобы вывести изображение с диска в дебиан понадобится вот такой html код.
<img src="file:///home/user/image.jpg">

Но это чисто для примера, конкретнее нужно смотреть на работу Qt с ресурсами (файлами). Тоже самое касается таблиц и прочего, не в смысле ресурсов, а в смысле, что это html совместимый код.
Re[2]: В чём разница между Line Edit, Text Edit, Plain Text Edit и Text Browser?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 11.07.22 06:48
Оценка:
Спасибо за объяснение!
1613 г. = 2024 г.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.