Шаг 112.
Библиотека PyQt5.
Основные компоненты. Многострочное текстовое поле. Класс QTextDocument
На этом шаге мы рассмотрим назначение этого класса, его конструкторы, а также перечислим его основные методы.
Класс QTextDocument из модуля QtGui представляет документ, который отображается в многострочном текстовом поле. Получить
ссылку на текущий документ позволяет метод document() класса QTextEdit. Установить новый документ можно с помощью
метода setDocument(<QTextDocument>). Иерархия наследования:
Конструктор класса QTextDocument имеет два формата:
<Объект> = QTextDocument([parent=<Poдитeль>])
<Объект> = QTextDocument(<Текст>[, pareпt=<Poдитeль>])
В параметре parent указывается ссылка на родительский компонент. Параметр <Текст> позволяет задать простой текст
(не в HTML-формате), который будет отображен в текстовом поле.
Класс QTextDocument поддерживает следующий набор методов (полный их список приведен на странице
https://doc.qt.io/qt-5/qtextdocument.html):
- setPlainText (<Текст>) - помещает в документ простой текст;
- setHtml (<Текст>) - помещает в документ текст в формате HTML;
- toPlainText () - возвращает простой текст, содержащийся в документе;
- toHtml ([<QByteArray>]) - возвращает текст в формате HTML. В качестве параметра можно указать кодировку документа, которая будет выведена в теге <meta>;
- clear () - удаляет весь текст из документа;
- isEmpty () - возвращает значение True, если документ пустой, и False - в противном случае;
- setModified (<Флаг>) - если передано значение True, документ помечается как измененный, если False - как неизмененный. Метод является слотом;
- isModified () - возвращает значение True, если документ был изменен, и False - в противном случае;
- undo () - отменяет последнюю операцию ввода пользователем при условии, что отмена возможна. Метод является слотом;
- redo () - повторяет последнюю отмененную операцию ввода пользователем, если это возможно. Метод является слотом;
- isUndoAvailable () - возвращает значение True, если можно отменить последнюю операцию ввода, и False - в противном случае;
- isRedoAvailable () - возвращает значение True, если можно повторить последнюю отмененную операцию ввода, и False - в противном случае;
- setUndoRedoEnabled (<Флаг>) - если в качестве параметра указано значение True, то операции отмены и повтора действий разрешены, а если False - то запрещены;
- isUndoRedoEnabled () - возвращает значение True, если операции отмены и повтора действий разрешены, и False - если запрещены;
- availableUndoSteps () - возвращает количество возможных операций отмены;
- availableRedoSteps () - возвращает количество возможных повторов отмененных операций;
- clearUndoRedoStacks ([stacks=UndoAndRedoStacks]) - очищает список возможных отмен и/или повторов. В качестве параметра можно указать следующие атрибуты класса
QTextDocument:
- UndoStack - только список возможных отмен;
- RedoStack - только список возможных повторов;
- undoAndRedoStacks - очищаются оба списка;
- print () - отправляет содержимое документа на печать. В качестве параметра указывается экземпляр одного из
классов, порожденных от QPagedPaintDevice: QPrinter или QPdfWriter;
- find () - производит поиск фрагмента в документе. Метод возвращает экземпляр класса QTextCursor из модуля QtGui.
Если фрагмент не найден, то возвращенный экземпляр объекта будет нулевым. Проверить успешность операции можно с помощью метода
isNull() класса QTextCursor. Форматы метода:
find (<Текст>[, position=0][, options=0])
find (<QRegExp>[, position=0][, options=0])
find (<Текст>, <QTextCursor>[, options=0])
find (<QRegExp>, <QTextCursor>[, options=0])
Параметр <Текст> задает искомый фрагмент, а параметр <QRegExp> позволяет указать регулярное выражение.
По умолчанию обычный поиск производится без учета регистра символов в прямом направлении, начиная с позиции position или от
текстового курсора, указанного в параметре <QTextCursor>. Поиск по регулярному выражению по умолчанию производится с учетом
регистра символов. Чтобы поиск производился без учета регистра, необходимо передать атрибут Qtcore.Qt.CaseInsensitive в метод
setCaseSensitivity() регулярного выражения. В необязательном параметре options можно указать комбинацию (через оператор |)
следующих атрибутов класса QTextDocument:
- FindBackward (или 1) - поиск в обратном, а не в прямом направлении;
- FindCaseSensitively (или 2) - поиск с учетом регистра символов. При использовании регулярного выражения значение игнорируется;
- FindWholeWords (или 4) - поиск целых слов, а не фрагментов;
- setDefaultFont (<QFont>) - задает шрифт по умолчанию для документа. В качестве параметра указывается экземпляр класса
QFont из модуля QtGui. Конструктор класса QFont имеет следующий формат:
<Шрифт> = QFont(<Название шрифта>[, pointSize=-1][, weight=-1]
[, italic=False])
В первом параметре указывается название шрифта в виде строки. Необязательный параметр pointSize задает размер шрифта. В параметре
weight можно выставить степень жирности шрифта: число от 0 до 99 или значение атрибутов Light, Normal, DemiBold, Bold или
Black класса QFont. Если в параметре italic указано значение True, то шрифт будет курсивным;
- setDfaultStyleSheet (<CSS>) - устанавливает для документа таблицу стилей CSS по умолчанию;
- setDocumentMargin (<Отступ>) - задает отступ от краев поля до текста;
- documentMargin () - возвращает величину отступа от краев поля до текста;
- setMaximumBlockCount (<Количество>) - задает максимальное количество текстовых блоков в документе. Если количество
блоков становится больше указанного значения, то первый блок будет удален;
- maximumBlockCount () - возвращает максимальное количество текстовых блоков;
- characterCount () - возвращает количество символов в документе;
- lineCount () - возвращает количество абзацев в документе;
- blockCount () - возвращает количество текстовых блоков в документе;
- firstBlock () - возвращает экземпляр класса QTextBlock, объявленного в модуле QtGui, который содержит первый текстовый блок документа;
- lastBlock () - возвращает экземпляр класса QTextBlock, который содержит последний текстовый блок документа;
- findВlock (<Индекс символа>) - возвращает экземпляр класса QTextBlock, который содержит текстовый блок документа, включающий символ с указанным индексом;
- findBlockByLineNumber (<Индекс абзаца>) - возвращает экземпляр класса QTextBlock, который содержит текстовый блок документа, включающий абзац с указанным индексом;
- findBlockByNumber (<Индекс блока>) - возвращает экземпляр класса QTextBlock, который содержит текстовый блок документа с указанным индексом.
На следующем шаге мы закончим рассмотрение этого класса.
Предыдущий шаг
Содержание
Следующий шаг