ээдд. Прохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен. Николай Прохоренок Владимир Дронов
Скачать 7.92 Mb.
|
— переключает элемент с заданным индексом (экземпляр класса QModelIndex ) в режим редактирования, не делая его выделенным. Метод является сло- том; setEditTriggers(<Режим>) — задает действие, при котором элемент переключается в режим редактирования. В качестве параметра указывается комбинация следующих атрибутов класса QAbstractItemView : • NoEditTriggers — 0 — элемент не поддерживает редактирование; • CurrentChanged — 1 — при выделении элемента; • DoubleClicked — 2 — при двойном щелчке мышью; Глава 22. Списки и таблицы 515 • SelectedClicked — 4 — при щелчке мышью на уже выделенном элементе; • EditKeyPressed — 8 — при нажатии клавиши • AnyKeyPressed — 16 — при нажатии любой символьной клавиши; • AllEditTriggers — 31 — при любом упомянутом здесь действии; setIconSize( — задает размер значков; setTextElideMode(<Режим>) — задает режим обрезки текста, если он не помещается в отведенную область (в месте пропуска выводится троеточие). Могут быть указаны следующие атрибуты класса QtCore.Qt : • ElideLeft — 0 — текст обрезается слева; • ElideRight — 1 — текст обрезается справа; • ElideMiddle — 2 — текст вырезается посередине; • ElideNone — 3 — текст не обрезается; setTabKeyNavigation(<Флаг>) — если в качестве параметра указано значение True , меж- ду элементами можно перемещаться с помощью клавиш scrollTo( — прокручивает представление таким образом, чтобы элемент, на который ссылается индекс (экземпляр класса QModelIndex ), был видим. В параметре hint указываются следующие атрибуты класса QAbstractItemView : • EnsureVisible — 0 — элемент должен находиться в области видимости; • PositionAtTop — 1 — элемент должен находиться в верхней части; • PositionAtBottom — 2 — элемент должен находиться в нижней части; • PositionAtCenter — 3 — элемент должен находиться в центре; scrollToTop() — прокручивает представление в самое начало. Метод является слотом; scrollToBottom() — прокручивает представление в самый конец. Метод является сло- том; setDragEnabled(<Флаг>) — если в качестве параметра указано значение True , перетаски- вание элементов разрешено; setDragDropMode(<Режим>) — задает режим работы drag & drop. В качестве параметра указываются следующие атрибуты класса QAbstractItemView : • NoDragDrop — 0 — drag & drop не поддерживается; • DragOnly — 1 — поддерживается только перетаскивание; • DropOnly — 2 — поддерживается только сбрасывание; • DragDrop — 3 — поддерживается перетаскивание и сбрасывание; • InternalMove — 4 — допускается лишь перетаскивание внутри компонента; setDropIndicatorShown(<Флаг>) — если в качестве параметра указано значение True , позиция возможного сброса элемента будет подсвечена; setAutoScroll(<Флаг>) — если в качестве параметра указано значение True , при пере- таскивании пункта будет производиться автоматическая прокрутка; setAutoScrollMargin(<Отступ>) — задает расстояние от края области, при достижении которого будет производиться автоматическая прокрутка области; 516 Часть II. Библиотека PyQt 5 update( — обновляет элемент с заданным индексом. Метод является сло- том. Класс QAbstractItemView поддерживает следующие сигналы: activated( — генерируется при активизации элемента путем одинарного или двойного щелчка мышью или нажатия клавиши pressed( — генерируется при нажатии кнопки мыши над элементом. Внутри обработчика через параметр доступен индекс элемента; clicked( — генерируется при щелчке мышью над элементом. Параметр хранит индекс элемента; doubleClicked( — генерируется при двойном щелчке мышью над эле- ментом. Параметр хранит индекс элемента; entered( — генерируется при вхождении указателя мыши в область эле- мента. Чтобы сигнал сработал, необходимо включить обработку перемещения указателя вызовом метода setMouseTracking() , унаследованного от класса QWidget . Внутри обра- ботчика через параметр доступен индекс элемента; viewportEntered — генерируется при вхождении указателя мыши в область компонента. Чтобы сигнал сработал, необходимо включить обработку перемещения указателя с по- мощью метода setMouseTracking() , унаследованного от класса QWidget 22.5.2. Простой список Класс QListView реализует простой список с возможностью выбора как одного, так и не- скольких пунктов. Кроме текста, в любом пункте такого списка может присутствовать зна- чок (рис. 22.1). Иерархия наследования выглядит так: (QObject, QPaintDevice) — QWidget — QFrame — QAbstractScrollArea — QAbstractItemView — QListView Рис. 22.1. Компонент QListView Формат конструктора класса QListView : <Объект> = QListView([parent=<Родитель>]) Типичный пример использования списка приведен в листинге 22.3. Листинг 22.3. Простой список QListView lv = QtWidgets.QListView() sti = QtGui.QStandardItemModel(parent = window) lst = ['Perl', 'PHP', 'Python', 'Ruby'] Глава 22. Списки и таблицы 517 for row in range(0, 4): if row == 2: iconfile = 'python.png' else: iconfile = 'icon.png' item = QtGui.QStandardItem(QtGui.QIcon(iconfile), lst[row]) sti.appendRow(item) lv.setModel(sti) Класс QListView наследует все методы и сигналы из класса QAbstractItemView (см. разд. 22.5.1), включая методы setModel() , model() и selectedIndexes() . Помимо этого, он дополнительно определяет следующие методы (здесь приведены только основные — полный их список можно найти на странице https://doc.qt.io/qt-5/qlistview.html): setModelColumn(<Индекс>) — задает индекс отображаемого столбца в табличной модели (по умолчанию отображается первый столбец с индексом 0 ); setViewMode(<Режим>) — задает режим отображения элементов. В качестве параметра указываются следующие атрибуты класса QListView : • ListMode — 0 — элементы размещаются сверху вниз, а значки имеют маленькие раз- меры; • IconMode — 1 — элементы размещаются слева направо, а значки имеют большие раз- меры. Элементы можно свободно перемещать мышью; setMovement(<Режим>) — задает режим перемещения элементов. В качестве параметра указываются следующие атрибуты класса QListView : • Static — 0 — пользователь не может перемещать элементы; • Free — 1 — свободное перемещение; • Snap — 2 — перемещаемые элементы автоматически выравниваются по сетке, разме- ры которой задаются методом setGridSize() ; setGridSize( — задает размеры сетки, по которой выравниваются перемещае- мые элементы; setResizeMode(<Режим>) — задает режим расположения элементов при изменении раз- мера списка. В качестве параметра указываются следующие атрибуты класса QListView : • Fixed — 0 — элементы остаются в том же положении; • Adjust — 1 — положение элементов изменяется при изменении размеров; setFlow(<Режим>) — задает порядок вывода элементов. В качестве параметра указыва- ются следующие атрибуты класса QListView : • LeftToRight — 0 — слева направо; • TopToBottom — 1 — сверху вниз; setWrapping(<Флаг>) — если в качестве параметра указано значение False , перенос эле- ментов на новую строку (если они не помещаются в ширину области) запрещен; setWordWrap(<Флаг>) — если в качестве параметра указано значение True , текст элемен- тов при необходимости будет переноситься по строкам; setLayoutMode(<Режим>) — задает режим размещения элементов. В качестве параметра указываются следующие атрибуты класса QListView : 518 Часть II. Библиотека PyQt 5 • SinglePass — 0 — элементы размещаются все сразу. Если список слишком большой, то окно останется заблокированным, пока все элементы не будут отображены; • Batched — 1 — элементы размещаются блоками. Размер такого блока задается мето- дом setBatchSize(<Количество>) ; setUniformItemSizes(<Флаг>) — если в качестве параметра указано значение True , все элементы будут иметь одинаковый размер (по умолчанию они имеют разные размеры, зависящие от содержимого); setSpacing(<Отступ>) — задает отступ вокруг элемента; setSelectionRectVisible(<Флаг>) — если в качестве параметра указано значение True , будет отображаться вспомогательная рамка, показывающая область выделения. Метод доступен только при использовании режима множественного выделения; setRowHidden(<Индекс>, <Флаг>) — если во втором параметре указано значение True , строка с индексом, указанным в первом параметре, будет скрыта. Значение False ото- бражает строку; isRowHidden(<Индекс>) — возвращает значение True , если строка с указанным индексом скрыта, и False — в противном случае. Класс QListView также поддерживает сигнал indexesMoved(<Элементы>) , генерируемый при перемещении элементов. Внутри обработчика через параметр доступен список перемещае- мых элементов в виде экземпляров класса QModelIndex 22.5.3. Таблица Класс QTableView реализует таблицу (рис. 22.2). Иерархия наследования выглядит так: (QObject, QPaintDevice) — QWidget — QFrame — QAbstractScrollArea — QAbstractItemView — QTableView Рис. 22.2. Компонент QTableView Формат конструктора класса QTableView : <Объект> = QTableView([parent=<Родитель>]) Класс QTableView наследует все методы и сигналы из класса QAbstractItemView (см. разд. 22.5.1) и дополнительно поддерживает следующие методы (здесь приведены только основные — полный их список можно найти на странице https://doc.qt.io/qt-5/qtableview.html): selectRow(<Индекс>) — выделяет строку с указанным индексом. Метод является слотом; selectColumn(<Индекс>) — выделяет столбец с указанным индексом. Метод является слотом; Глава 22. Списки и таблицы 519 horizontalHeader() — возвращает ссылку на горизонтальный заголовок, представлен- ный экземпляром класса QHeaderView ; verticalHeader() — возвращает ссылку на вертикальный заголовок, представленный экземпляром класса QHeaderView . Например, вывести таблицу без заголовков можно сле- дующим образом: view.horizontalHeader().hide() view.verticalHeader().hide() setRowHeight(<Индекс>, <Высота>) — задает высоту строки с указанным в первом пара- метре индексом; rowHeight(<Индекс>) — возвращает высоту строки; setColumnWidth(<Индекс>, <Ширина>) — задает ширину столбца с указанным в первом параметре индексом; columnWidth(<Индекс>) — возвращает ширину столбца; resizeRowToContents(<Индекс строки>) — изменяет размер указанной строки таким об- разом, чтобы в нее поместилось все содержимое. Метод является слотом; resizeRowsToContents() — изменяет размер всех строк таким образом, чтобы в них по- местилось все содержимое. Метод является слотом; resizeColumnToContents(<Индекс столбца>) — изменяет размер указанного столбца та- ким образом, чтобы в него поместилось все содержимое. Метод является слотом; resizeColumnsToContents() — изменяет размер всех столбцов таким образом, чтобы в них поместилось содержимое. Метод является слотом; setSpan(<Индекс строки>, <Индекс столбца>, <Количество строк>, <Количество столб- цов>) — растягивает элемент с указанными в первых двух параметрах индексами на за- данное количество строк и столбцов, производя как бы объединение ячеек таблицы; rowSpan(<Индекс строки>, <Индекс столбца>) — возвращает количество ячеек в строке, которое занимает элемент с указанными индексами; columnSpan(<Индекс строки>, <Индекс столбца>) — возвращает количество ячеек в столбце, которое занимает элемент с указанными индексами; clearSpans() — отменяет все объединения ячеек; setRowHidden(<Индекс>, <Флаг>) — если во втором параметре указано значение True , то строка с индексом, указанным в первом параметре, будет скрыта. Значение False ото- бражает строку; hideRow(<Индекс>) — скрывает строку с указанным индексом. Метод является слотом; showRow(<Индекс>) — отображает строку с указанным индексом. Метод является слотом; isRowHidden(<Индекс>) — возвращает значение True , если строка с указанным индексом скрыта, и False — в противном случае; setColumnHidden(<Индекс>, <Флаг>) — если во втором параметре указано значение True , то столбец с индексом, указанным в первом параметре, будет скрыт. Значение False отображает столбец; hideColumn(<Индекс>) — скрывает столбец с указанным индексом. Метод является сло- том; showColumn(<Индекс>) — отображает столбец с указанным индексом. Метод является слотом; 520 Часть II. Библиотека PyQt 5 isColumnHidden(<Индекс>) — возвращает значение True , если столбец с указанным ин- дексом скрыт, и False — в противном случае; isIndexHidden( — возвращает значение True , если элемент с указанным индексом (экземпляр класса QModelIndex ) скрыт, и False — в противном случае; setGridStyle(<Стиль>) — задает стиль линий сетки. В качестве параметра указываются следующие атрибуты класса QtCore.Qt : • NoPen — 0 — линии не выводятся; • SolidLine — 1 — сплошная линия; • DashLine — 2 — штриховая линия; • DotLine — 3 — точечная линия; • DashDotLine — 4 — штрих и точка, штрих и точка и т. д.; • DashDotDotLine — 5 — штрих и две точки, штрих и две точки и т. д.; setShowGrid(<Флаг>) — если в качестве параметра указано значение True , то сетка будет отображена, а если False — то скрыта. Метод является слотом; setSortingEnabled(<Флаг>) — если в качестве параметра указано значение True , столб- цы можно сортировать с помощью щелчков мышью на их заголовках. При этом в заго- ловке показывается текущее направление сортировки; setCornerButtonEnabled(<Флаг>) — если в качестве параметра указано значение True , с помощью кнопки в левом верхнем углу заголовка можно выделить всю таблицу. Зна- чение False отключает кнопку; setWordWrap(<Флаг>) — если в качестве параметра указано значение True , текст элемен- тов при необходимости будет переноситься по строкам; sortByColumn(<Индекс столбца>, <Направление>) — производит сортировку. Если во втором параметре указан атрибут AscendingOrder класса QtCore.Qt , сортировка произво- дится в прямом порядке, а если DescendingOrder — в обратном. 22.5.4. Иерархический список Класс QTreeView реализует иерархический список (рис. 22.3). Иерархия наследования: (QObject, QPaintDevice) — QWidget — QFrame — QAbstractScrollArea — QAbstractItemView — QTreeView Формат конструктора класса QTreeView : <Объект> = QTreeView([parent=<Родитель>]) Рис. 22.3. Компонент QTreeView Глава 22. Списки и таблицы 521 Класс QTreeView наследует все методы и сигналы класса QAbstractItemView (см. разд. 22.5.1) и дополнительно поддерживает следующие методы (здесь приведены только основные — полный их список можно найти на странице https://doc.qt.io/qt-5/qtreeview.html): header() — возвращает ссылку на горизонтальный заголовок (экземпляр класса QHeaderView ); setColumnWidth(<Индекс>, <Ширина>) — задает ширину столбца с указанным в первом параметре индексом; columnWidth(<Индекс>) — возвращает ширину столбца; rowHeight( — возвращает высоту строки, в которой находится элемент с указанным индексом (экземпляр класса QModelIndex ); resizeColumnToContents(<Индекс столбца>) — изменяет ширину указанного столбца таким образом, чтобы в нем поместилось все содержимое. Метод является слотом; setUniformRowHeights(<Флаг>) — если в качестве параметра указано значение True , все элементы будут иметь одинаковую высоту; setHeaderHidden(<Флаг>) — если в качестве параметра указано значение True , заголовок будет скрыт. Значение False отображает заголовок; isHeaderHidden() — возвращает значение True , если заголовок скрыт, и False — в про- тивном случае; setColumnHidden(<Индекс>, <Флаг>) — если во втором параметре указано значение True , то столбец с индексом, указанным в первом параметре, будет скрыт. Значение False отображает столбец; hideColumn(<Индекс>) — скрывает столбец с указанным индексом. Метод является сло- том; showColumn(<Индекс>) — отображает столбец с указанным индексом. Метод является слотом; isColumnHidden(<Индекс>) — возвращает значение True , если столбец с указанным ин- дексом скрыт, и False — в противном случае; setRowHidden(<Индекс>, — если в третьем параметре указано значение True , то строка с индексом <Индекс> и родителем будет скрыта. Значение False отображает строку; isRowHidden(<Индекс>, — возвращает значение True , если строка с ука- занным индексом <Индекс> и родителем |