ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2023
Просмотров: 854
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Глава 21. Основные компоненты
475
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(
Параметр
<Текст>
задает искомый фрагмент, а параметр
позволяет указать ре- гулярное выражение. По умолчанию обычный поиск производится без учета регистра символов в прямом направлении, начиная с позиции position или от текстового курсора, указанного в параметре
. Поиск по регулярному выражению по умол- чанию производится с учетом регистра символов. Чтобы поиск производился без учета регистра, необходимо передать атрибут
QtCore.Qt.CaseInsensitive в метод setCaseSensitivity()
регулярного выражения. В необязательном параметре options можно указать комбинацию (через оператор
|
) следующих атрибутов класса
QTextDocument
:
476
Часть II. Библиотека PyQt 5
•
FindBackward
—
1
— поиск в обратном, а не в прямом направлении;
•
FindCaseSensitively
—
2
— поиск с учетом регистра символов. При использовании регулярного выражения значение игнорируется;
•
FindWholeWords
—
4
— поиск целых слов, а не фрагментов;
setDefaultFont(
— задает шрифт по умолчанию для документа. В качестве параметра указывается экземпляр класса
QFont из модуля
QtGui
. Конструктор класса
QFont имеет следующий формат:
<Шрифт> = QFont(<Название шрифта>[, pointSize=-1][, weight=-1]
[, italic=False])
В первом параметре указывается название шрифта в виде строки. Необязательный пара- метр pointSize задает размер шрифта. В параметре weight можно выставить степень жирности шрифта: число от
0
до
99
или значение атрибутов
Light
,
Normal
,
DemiBold
,
Bold или
Black класса
QFont
. Если в параметре italic указано значение
True
, шрифт будет курсивным;
setDefaultStyleSheet(
— устанавливает для документа таблицу стилей CSS по умолчанию;
setDocumentMargin(<Отступ>)
— задает отступ от краев поля до текста;
documentMargin()
— возвращает величину отступа от краев поля до текста;
setMaximumBlockCount(<Количество>)
— задает максимальное количество текстовых блоков в документе. Если количество блоков становится больше указанного значения, первый блок будет удален;
maximumBlockCount()
— возвращает максимальное количество текстовых блоков;
characterCount()
— возвращает количество символов в документе;
lineCount()
— возвращает количество абзацев в документе;
blockCount()
— возвращает количество текстовых блоков в документе;
firstBlock()
— возвращает экземпляр класса
QTextBlock
, объявленного в модуле
QtGui
, который содержит первый текстовый блок документа;
lastBlock()
— возвращает экземпляр класса
QTextBlock
, который содержит последний текстовый блок документа;
findBlock(<Индекс символа>)
— возвращает экземпляр класса
QTextBlock
, который содержит текстовый блок документа, включающий символ с указанным индексом;
findBlockByLineNumber(<Индекс абзаца>)
— возвращает экземпляр класса
QTextBlock
, который содержит текстовый блок документа, включающий абзац с указанным индек- сом;
findBlockByNumber(<Индекс блока>)
— возвращает экземпляр класса
QTextBlock
, кото- рый содержит текстовый блок документа с указанным индексом.
Класс
QTextDocument поддерживает сигналы:
undoAvailable(<Флаг>)
— генерируется при изменении возможности отменить опера- цию ввода. Значение параметра
True обозначает наличие возможности отменить опера- цию ввода, а
False
— отсутствие такой возможности;
redoAvailable(<Флаг>)
— генерируется при изменении возможности повторить отме- ненную операцию ввода. Значение параметра
True обозначает наличие возможности по- вторить отмененную операцию ввода, а
False
— отсутствие такой возможности;
Глава 21. Основные компоненты
477
undoCommandAdded
— генерируется при добавлении операции ввода в список возможных отмен;
blockCountChanged(<Новое количество блоков>)
— генерируется при изменении количе- ства текстовых блоков. Внутри обработчика через параметр доступно новое количество текстовых блоков, заданное целым числом;
cursorPositionChanged(
— генерируется при изменении позиции тексто- вого курсора из-за операции редактирования. При простом перемещении текстового курсора сигнал не генерируется;
contentsChange(<Позиция курсора>, <Количество добавленных символов>, <Количество удаленных символов>)
— генерируется при изменении текста. Все три параметра цело- численные;
contentsChanged
— генерируется при любом изменении документа;
modificationChanged(<Флаг>)
— генерируется при изменении состояния документа: из неизмененного в измененное или наоборот. Значение параметра
True обозначает, что документ помечен как измененный, значение
False
— что он теперь неизмененный.
21.6.5. Класс QTextCursor
Класс
QTextCursor из модуля
QtGui предоставляет инструмент для доступа к документу, представленному экземпляром класса
QTextDocument
, и для его правки, — иными словами, текстовый курсор. Конструктор класса
QTextCursor поддерживает следующие форматы:
<Объект> = QTextCursor()
<Объект> = QTextCursor(
<Объект> = QTextCursor(
<Объект> = QTextCursor(
<Объект> = QTextCursor(
Создать текстовый курсор, установить его в документе и управлять им позволяют следую- щие методы класса
QTextEdit
:
textCursor()
— возвращает видимый в данный момент текстовый курсор (экземпляр класса
QTextCursor
). Чтобы изменения затронули текущий документ, необходимо пере- дать этот объект в метод setTextCursor()
;
setTextCursor(
— устанавливает текстовый курсор, ссылка на который указана в качестве параметра;
cursorForPosition(
— возвращает текстовый курсор, который соответствует позиции, указанной в качестве параметра. Позиция задается с помощью экземпляра класса
QPoint в координатах области;
moveCursor(<Позиция>[, mode=MoveAnchor])
1 ... 40 41 42 43 44 45 46 47 ... 83
— перемещает текстовый курсор внутри документа. В первом параметре можно указать следующие атрибуты класса
QTextCursor
:
•
NoMove
—
0
— не перемещать курсор;
•
Start
—
1
— в начало документа;
•
Up
—
2
— на одну строку вверх;
•
StartOfLine
—
3
— в начало текущей строки;
•
StartOfBlock
—
4
— в начало текущего текстового блока;
478
Часть II. Библиотека PyQt 5
•
StartOfWord
—
5
— в начало текущего слова;
•
PreviousBlock
—
6
— в начало предыдущего текстового блока;
•
PreviousCharacter
—
7
— на предыдущий символ;
•
PreviousWord
—
8
— в начало предыдущего слова;
•
Left
—
9
— сдвинуть на один символ влево;
•
WordLeft
—
10
— влево на одно слово;
•
End
—
11
— в конец документа;
•
Down
—
12
— на одну строку вниз;
•
EndOfLine
—
13
— в конец текущей строки;
•
EndOfWord
—
14
— в конец текущего слова;
•
EndOfBlock
—
15
— в конец текущего текстового блока;
•
NextBlock
—
16
— в начало следующего текстового блока;
•
NextCharacter
—
17
— на следующий символ;
•
NextWord
—
18
— в начало следующего слова;
•
Right
—
19
— сдвинуть на один символ вправо;
•
WordRight
—
20
— в начало следующего слова.
Помимо указанных, существуют также атрибуты
NextCell
,
PreviousCell
,
NextRow и
PreviousRow
, позволяющие перемещать текстовый курсор внутри таблицы. В необяза- тельном параметре mode можно указать следующие атрибуты из класса
QTextCursor
:
•
MoveAnchor
—
0
— если существует выделенный фрагмент, выделение будет снято, и текстовый курсор переместится в новое место (значение по умолчанию);
•
KeepAnchor
—
1
— фрагмент текста от старой позиции курсора до новой будет выде- лен.
Класс
QTextCursor поддерживает следующие методы (здесь приведены только основные — полный их список смотрите на странице https://doc.qt.io/qt-5/qtextcursor.html):
isNull()
— возвращает значение
True
, если объект курсора является нулевым (создан с помощью конструктора без параметра), и
False
— в противном случае;
setPosition(<Позиция>[, mode=MoveAnchor])
— перемещает текстовый курсор внутри документа. В первом параметре указывается позиция внутри документа. Необязатель- ный параметр mode аналогичен одноименному параметру в методе moveCursor()
класса
QTextEdit
;
movePosition(<Позиция>[, mode=MoveAnchor][, n=1])
— перемещает текстовый курсор внутри документа. Параметры
<Позиция>
и mode аналогичны одноименным параметрам в методе moveCursor()
класса
QTextEdit
. Необязательный параметр n
позволяет указать количество перемещений — например, переместить курсор на 10 символов вперед мож- но так: cur = textEdit.textCursor() cur.movePosition(QtGui.QTextCursor.NextCharacter, mode=QtGui.QTextCursor.MoveAnchor, n=10) textEdit.setTextCursor(cur)
Глава 21. Основные компоненты
479
Метод movePosition()
возвращает значение
True
, если операция успешно выполнена указанное количество раз. Если было выполнено меньшее количество перемещений
(например, из-за достижения конца документа), метод возвращает значение
False
;
position()
— возвращает позицию текстового курсора внутри документа;
positionInBlock()
— возвращает позицию текстового курсора внутри блока;
block()
— возвращает экземпляр класса
QTextBlock
, который описывает текстовый блок, содержащий курсор;
blockNumber()
— возвращает номер текстового блока, содержащего курсор;
atStart()
— возвращает значение
True
, если текстовый курсор находится в начале до- кумента, и
False
— в противном случае;
atEnd()
— возвращает значение
True
, если текстовый курсор находится в конце доку- мента, и
False
— в противном случае;
atBlockStart()
— возвращает значение
True
, если текстовый курсор находится в начале блока, и
False
— в противном случае;
atBlockEnd()
— возвращает значение
True
, если текстовый курсор находится в конце блока, и
False
— в противном случае;
select(<Режим>)
— выделяет фрагмент в документе в соответствии с указанным режи- мом. В качестве параметра можно указать следующие атрибуты класса
QTextCursor
:
•
WordUnderCursor
—
0
— выделяет слово, в котором расположен курсор;
•
LineUnderCursor
—
1
— выделяет строку, в которой расположен курсор;
•
BlockUnderCursor
—
2
— выделяет текстовый блок, в котором находится курсор;
•
Document
—
3
— выделяет весь документ;
hasSelection()
— возвращает значение
True
, если существует выделенный фрагмент, и
False
— в противном случае;
hasComplexSelection()
— возвращает значение
True
, если выделенный фрагмент содер- жит сложное форматирование, а не просто текст, и
False
— в противном случае;
clearSelection()
— снимает выделение;
selectionStart()
— возвращает начальную позицию выделенного фрагмента;
selectionEnd()
— возвращает конечную позицию выделенного фрагмента;
selectedText()
— возвращает текст выделенного фрагмента;
В
НИМАНИЕ
!
Если выделенный фрагмент занимает несколько строк, то вместо символа перевода строки вставляется символ с кодом \u2029. Попытка вывести этот символ в окно консоли приве- дет к исключению, поэтому следует произвести замену символа с помощью метода replace()
: print(cur.selectedText().replace("\u2029", "\n"))
selection()
— возвращает экземпляр класса
QTextDocumentFragment
, который описывает выделенный фрагмент. Получить текст позволяют методы toPlainText()
(возвращает простой текст) и toHtml()
(возвращает текст в формате HTML) этого класса;
removeSelectedText()
— удаляет выделенный фрагмент;