Класс QTableWidget
Класс QTableWidget предоставляет представление таблицы на основе элементов с моделью по умолчанию. Подробнее...
| Заголовок: | #include <QTableWidget> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследуется от: | QTableView |
Свойства
- columnCount : int
- rowCount : int
Открытые функции
| QTableWidget(int rows, int columns, QWidget *parent = nullptr) | |
| QTableWidget(QWidget *parent = nullptr) | |
| virtual | ~QTableWidget() |
| QWidget * | cellWidget(int row, int column) const |
| void | closePersistentEditor(QTableWidgetItem *item) |
| int | column(const QTableWidgetItem *item) const |
| int | columnCount() const |
| int | currentColumn() const |
| QTableWidgetItem * | currentItem() const |
| int | currentRow() const |
| void | editItem(QTableWidgetItem *item) |
| QList<QTableWidgetItem *> | findItems(const QString &text, Qt::MatchFlags flags) const |
| QTableWidgetItem * | horizontalHeaderItem(int column) const |
| QModelIndex | indexFromItem(const QTableWidgetItem *item) const |
| bool | isPersistentEditorOpen(QTableWidgetItem *item) const |
| QTableWidgetItem * | item(int row, int column) const |
| QTableWidgetItem * | itemAt(const QPoint &point) const |
| QTableWidgetItem * | itemAt(int ax, int ay) const |
| QTableWidgetItem * | itemFromIndex(const QModelIndex &index) const |
| const QTableWidgetItem * | itemPrototype() const |
| QList<QTableWidgetItem *> | items(const QMimeData *data) const |
| void | openPersistentEditor(QTableWidgetItem *item) |
| void | removeCellWidget(int row, int column) |
| int | row(const QTableWidgetItem *item) const |
| int | rowCount() const |
| QList<QTableWidgetItem *> | selectedItems() const |
| QList<QTableWidgetSelectionRange> | selectedRanges() const |
| void | setCellWidget(int row, int column, QWidget *widget) |
| void | setColumnCount(int columns) |
| void | setCurrentCell(int row, int column) |
| void | setCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command) |
| void | setCurrentItem(QTableWidgetItem *item) |
| void | setCurrentItem(QTableWidgetItem *item, QItemSelectionModel::SelectionFlags command) |
| void | setHorizontalHeaderItem(int column, QTableWidgetItem *item) |
| void | setHorizontalHeaderLabels(const QStringList &labels) |
| void | setItem(int row, int column, QTableWidgetItem *item) |
| void | setItemPrototype(const QTableWidgetItem *item) |
| void | setRangeSelected(const QTableWidgetSelectionRange &range, bool select) |
| void | setRowCount(int rows) |
| void | setVerticalHeaderItem(int row, QTableWidgetItem *item) |
| void | setVerticalHeaderLabels(const QStringList &labels) |
| void | sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder) |
| QTableWidgetItem * | takeHorizontalHeaderItem(int column) |
| QTableWidgetItem * | takeItem(int row, int column) |
| QTableWidgetItem * | takeVerticalHeaderItem(int row) |
| QTableWidgetItem * | verticalHeaderItem(int row) const |
| int | visualColumn(int logicalColumn) const |
| QRect | visualItemRect(const QTableWidgetItem *item) const |
| int | visualRow(int logicalRow) const |
Открытые слоты
| void | clear() |
| void | clearContents() |
| void | insertColumn(int column) |
| void | insertRow(int row) |
| void | removeColumn(int column) |
| void | removeRow(int row) |
| void | scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible) |
Сигналы
| void | cellActivated(int row, int column) |
| void | cellChanged(int row, int column) |
| void | cellClicked(int row, int column) |
| void | cellDoubleClicked(int row, int column) |
| void | cellEntered(int row, int column) |
| void | cellPressed(int row, int column) |
| void | currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn) |
| void | currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous) |
| void | itemActivated(QTableWidgetItem *item) |
| void | itemChanged(QTableWidgetItem *item) |
| void | itemClicked(QTableWidgetItem *item) |
| void | itemDoubleClicked(QTableWidgetItem *item) |
| void | itemEntered(QTableWidgetItem *item) |
| void | itemPressed(QTableWidgetItem *item) |
| void | itemSelectionChanged() |
Защищенные функции
| virtual bool | dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action) |
| virtual QMimeData * | mimeData(const QList<QTableWidgetItem *> &items) const |
| virtual QStringList | mimeTypes() const |
| virtual Qt::DropActions | supportedDropActions() const |
Переопределенные защищенные функции
| virtual void | dropEvent(QDropEvent *event) override |
| virtual bool | event(QEvent *e) override |
Подробное описание
Виджеты таблиц предоставляют стандартные средства отображения таблиц для приложений. Элементы в QTableWidget предоставляются классом QTableWidgetItem.
Если вам нужна таблица, использующая собственную модель данных, вы должны использовать QTableView, а не этот класс.
Виджеты таблиц могут быть созданы с требуемым количеством строк и столбцов:
tableWidget = new QTableWidget(12, 3, this);
В качестве альтернативы, таблицы могут быть созданы без заданного размера и изменены позже:
tableWidget = new QTableWidget(this);
tableWidget->setRowCount(10);
tableWidget->setColumnCount(5); Элементы создаются вне таблицы (без родительского виджета) и вставляются в таблицу с помощью setItem():
QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(
(row+1)*(column+1)));
tableWidget->setItem(row, column, newItem); Если вы хотите включить сортировку в виджет таблицы, сделайте это после заполнения его элементами, иначе сортировка может повлиять на порядок вставки (см. setItem() для подробностей).
Таблицы могут иметь горизонтальные и вертикальные заголовки. Самый простой способ создания заголовков — передать список строк функциям setHorizontalHeaderLabels() и setVerticalHeaderLabels(). Они предоставят простые текстовые заголовки для столбцов и строк таблицы. Более сложные заголовки могут быть созданы из существующих элементов таблицы, которые обычно создаются за пределами таблицы. Например, мы можем создать элемент таблицы с иконкой и выровненным текстом и использовать его в качестве заголовка определенного столбца:
QTableWidgetItem *cubesHeaderItem = new QTableWidgetItem(tr("Cubes"));
cubesHeaderItem->setIcon(QIcon(QPixmap(":/Images/cubed.png")));
cubesHeaderItem->setTextAlignment(Qt::AlignVCenter); Количество строк в таблице можно найти с помощью rowCount(), а количество столбцов — с помощью columnCount(). Таблица может быть очищена функцией clear().
См. также QTableWidgetItem, QTableView и Модельно-видовое программирование.
Документация свойств
columnCount : int
Это свойство содержит количество столбцов в таблице
По умолчанию для таблицы, созданной без количества строк и столбцов, это свойство содержит значение 0.
Функции доступа:
| int | columnCount() const |
| void | setColumnCount(int columns) |
rowCount : int
Это свойство содержит количество строк в таблице
По умолчанию для таблицы, созданной без количества строк и столбцов, это свойство содержит значение 0.
Функции доступа:
| int | rowCount() const |
| void | setRowCount(int rows) |
Документация по функциям-членам
QTableWidget::QTableWidget(int rows, int columns, QWidget *parent = nullptr)
Создает новый виджет таблицы с заданным количеством rows и columns и с заданным parent.
QTableWidget::QTableWidget(QWidget *parent = nullptr)
Создает новый виджет таблицы с заданным parent.
[signal] void QTableWidget::cellActivated(int row, int column)
Этот сигнал генерируется, когда ячейка, указанная значениями row и column, активирована
[signal] void QTableWidget::cellChanged(int row, int column)
Этот сигнал генерируется всякий раз, когда данные элемента в ячейке, указанной значениями row и column, меняются.
[signal] void QTableWidget::cellClicked(int row, int column)
Этот сигнал генерируется всякий раз, когда ячейка в таблице нажимается. Указанные значения row и column — это ячейка, которая была нажата.
[signal] void QTableWidget::cellDoubleClicked(int row, int column)
Этот сигнал генерируется всякий раз, когда ячейка в таблице дважды щелкается. Указанные значения row и column — это ячейка, которая была дважды щелкнута.
[signal] void QTableWidget::cellEntered(int row, int column)
Этот сигнал испускается, когда курсор мыши входит в ячейку. Ячейка задаётся значениями row и column.
Этот сигнал испускается только тогда, когда включен режим отслеживания мыши или когда нажата кнопка мыши при перемещении в элемент.
[signal] void QTableWidget::cellPressed(int row, int column)
Этот сигнал испускается всякий раз, когда в таблице нажимается ячейка. Заданные значения row и column определяют нажатую ячейку.
[slot] void QTableWidget::clear()
Удаляет все элементы в представлении. Это также удалит все выделения и заголовки. Если вы не хотите удалять заголовки, используйте QTableWidget::clearContents(). Размеры таблицы остаются неизменными.
[slot] void QTableWidget::clearContents()
Удаляет все элементы, не являющиеся заголовками, из представления. Это также удалит все выделения. Размеры таблицы остаются неизменными.
[signal] void QTableWidget::currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
Этот сигнал испускается всякий раз, когда изменяется текущая ячейка. Ячейка, заданная значениями previousRow и previousColumn, является ячейкой, которая ранее имела фокус, а ячейка, заданная значениями currentRow и currentColumn, является новой текущей ячейкой.
[signal] void QTableWidget::currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)
Этот сигнал испускается всякий раз, когда изменяется текущий элемент. Элемент previous — это элемент, который ранее имел фокус, а current — новый текущий элемент.
[slot] void QTableWidget::insertColumn(int column)
Вставляет пустой столбец в таблицу в позиции column.
[slot] void QTableWidget::insertRow(int row)
Вставляет пустую строку в таблицу в позиции row.
[signal] void QTableWidget::itemActivated(QTableWidgetItem *item)
Этот сигнал испускается, когда указанный элемент item был активирован
[signal] void QTableWidget::itemChanged(QTableWidgetItem *item)
Этот сигнал испускается всякий раз, когда данные элемента item изменяются.
[signal] void QTableWidget::itemClicked(QTableWidgetItem *item)
Этот сигнал испускается всякий раз, когда в таблице нажимается элемент. Указанный элемент item — это нажатый элемент.
[signal] void QTableWidget::itemDoubleClicked(QTableWidgetItem *item)
Этот сигнал испускается всякий раз, когда в таблице дважды нажимается элемент. Указанный элемент item — это дважды нажатый элемент.
[signal] void QTableWidget::itemEntered(QTableWidgetItem *item)
Этот сигнал испускается, когда курсор мыши входит в элемент. Элемент item — это вошедший элемент.
Этот сигнал испускается только тогда, когда включен режим отслеживания мыши или когда нажата кнопка мыши при перемещении в элемент.
[signal] void QTableWidget::itemPressed(QTableWidgetItem *item)
Этот сигнал испускается всякий раз, когда в таблице нажимается элемент. Указанный элемент item — это нажатый элемент.
[signal] void QTableWidget::itemSelectionChanged()
Этот сигнал испускается всякий раз, когда изменяется выделение.
См. также selectedItems() и QTableWidgetItem::isSelected().
[slot] void QTableWidget::removeColumn(int column)
Удаляет столбец column и все его элементы из таблицы.
[slot] void QTableWidget::removeRow(int row)
Удаляет строку row и все её элементы из таблицы.
[slot] void QTableWidget::scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)
Прокручивает представление, если необходимо, чтобы элемент item был виден. Параметр hint более точно задаёт, где должен располагаться элемент item после операции.
[virtual] QTableWidget::~QTableWidget()
Уничтожает этот QTableWidget.
QWidget *QTableWidget::cellWidget(int row, int column) const
Возвращает виджет, отображаемый в ячейке с заданными row и column.
Примечание: Таблица принимает во владение виджет.
См. также setCellWidget().
void QTableWidget::closePersistentEditor(QTableWidgetItem *item)
Закрывает постоянный редактор для элемента item.
См. также openPersistentEditor() и isPersistentEditorOpen().
int QTableWidget::column(const QTableWidgetItem *item) const
Возвращает номер столбца для элемента item.
int QTableWidget::columnCount() const
Возвращает количество столбцов.
Примечание: Функция-получатель для свойства columnCount.
См. также setColumnCount().
int QTableWidget::currentColumn() const
Возвращает номер столбца текущего элемента.
См. также currentRow() и setCurrentCell().
QTableWidgetItem *QTableWidget::currentItem() const
Возвращает текущий элемент.
См. также setCurrentItem().
int QTableWidget::currentRow() const
Возвращает номер строки текущего элемента.
См. также currentColumn() и setCurrentCell().
[override virtual protected] void QTableWidget::dropEvent(QDropEvent *event)
Переопределяет: QAbstractItemView::dropEvent(QDropEvent *event).
[virtual protected] bool QTableWidget::dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action)
Обрабатывает данные data, предоставленные операцией перетаскивания, которая завершилась заданным action в заданной row и column. Возвращает true если модель может обработать данные и действие, в противном случае возвращает false.
См. также supportedDropActions().
void QTableWidget::editItem(QTableWidgetItem *item)
Начинает редактирование элемента item, если он редактируется.
[override virtual protected] bool QTableWidget::event(QEvent *e)
Переопределяет: QAbstractItemView::event(QEvent *event).
QList<QTableWidgetItem *> QTableWidget::findItems(const QString &text, Qt::MatchFlags flags) const
Ищет элементы, соответствующие text, используя заданные flags.
QTableWidgetItem *QTableWidget::horizontalHeaderItem(int column) const
Возвращает элемент заголовка строки для столбца column, если он задан; в противном случае возвращает nullptr.
См. также setHorizontalHeaderItem().
QModelIndex QTableWidget::indexFromItem(const QTableWidgetItem *item) const
Возвращает QModelIndex, связанную с заданным item.
Примечание: В версиях Qt до 5.10 эта функция принимала не-const item.
[since 5.10] bool QTableWidget::isPersistentEditorOpen(QTableWidgetItem *item) const
Возвращает значение, указывающее, открыт ли постоянный редактор для элемента item.
Эта функция была добавлена в Qt 5.10.
См. также openPersistentEditor() и closePersistentEditor().
QTableWidgetItem *QTableWidget::item(int row, int column) const
Возвращает элемент для заданного row и column, если он был задан; в противном случае возвращает nullptr.
См. также setItem().
QTableWidgetItem *QTableWidget::itemAt(const QPoint &point) const
Возвращает указатель на элемент в заданной point, или возвращает nullptr, если point не покрывается элементом в таблице.
См. также item().
QTableWidgetItem *QTableWidget::itemAt(int ax, int ay) const
Возвращает элемент в позиции, эквивалентной QPoint(ax, ay) в системе координат виджета таблицы, или возвращает nullptr, если указанная точка не покрывается элементом в виджете таблицы.
См. также item().
QTableWidgetItem *QTableWidget::itemFromIndex(const QModelIndex &index) const
Возвращает указатель на QTableWidgetItem, связанный с заданным index.
const QTableWidgetItem *QTableWidget::itemPrototype() const
Возвращает шаблон элемента, используемый таблицей.
См. также setItemPrototype().
QList<QTableWidgetItem *> QTableWidget::items(const QMimeData *data) const
Возвращает список указателей на элементы, содержащиеся в объекте data. Если объект не был создан виджетом QTreeWidget в том же процессе, список пуст.
[virtual protected] QMimeData *QTableWidget::mimeData(const QList<QTableWidgetItem *> &items) const
Возвращает объект, содержащий сериализованное описание указанных items. Формат описания элементов получен из функции mimeTypes().
Если список элементов пуст, возвращается nullptr, а не сериализованный пустой список.
[virtual protected] QStringList QTableWidget::mimeTypes() const
Возвращает список MIME-типов, которые могут использоваться для описания списка элементов виджета таблицы.
См. также mimeData().
void QTableWidget::openPersistentEditor(QTableWidgetItem *item)
Открывает редактор для заданного item. Редактор остается открытым после редактирования.
См. также closePersistentEditor() и isPersistentEditorOpen().
void QTableWidget::removeCellWidget(int row, int column)
Удаляет виджет, установленный в ячейке, указанной row и column.
int QTableWidget::row(const QTableWidgetItem *item) const
Возвращает строку для item.
int QTableWidget::rowCount() const
Возвращает количество строк.
Примечание: Функция-получатель для свойства rowCount.
См. также setRowCount().
QList<QTableWidgetItem *> QTableWidget::selectedItems() const
Возвращает список всех выбранных элементов.
Эта функция возвращает список указателей на содержимое выбранных ячеек. Используйте функцию selectedIndexes(), чтобы получить полное выделение, включая пустые ячейки.
См. также selectedIndexes().
QList<QTableWidgetSelectionRange> QTableWidget::selectedRanges() const
Возвращает список всех выделенных диапазонов.
См. также QTableWidgetSelectionRange.
void QTableWidget::setCellWidget(int row, int column, QWidget *widget)
Устанавливает заданный widget для отображения в ячейке в заданной row и column, передавая владение виджетом таблице.
Если виджет A в ячейке заменён на виджет B, виджет A будет удалён. Например, в фрагменте кода ниже, объект QLineEdit будет удалён.
setCellWidget(row, column, new QLineEdit); ... setCellWidget(row, column, new QTextEdit);
См. также cellWidget().
void QTableWidget::setColumnCount(int columns)
Устанавливает количество столбцов в модели этой таблицы в columns. Если это значение меньше columnCount(), данные в ненужных столбцах удаляются.
Примечание: Функция-установитель для свойства columnCount.
См. также columnCount() и setRowCount().
void QTableWidget::setCurrentCell(int row, int column)
Устанавливает текущую ячейку в ячейку с позицией (row, column).
В зависимости от текущего режима выбора, ячейка также может быть выбрана.
См. также setCurrentItem(), currentRow() и currentColumn().
void QTableWidget::setCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command)
Устанавливает текущую ячейку в ячейку с позицией (row, column), используя заданную command.
См. также setCurrentItem(), currentRow() и currentColumn().
void QTableWidget::setCurrentItem(QTableWidgetItem *item)
Устанавливает текущий элемент в item.
Если режим выбора не NoSelection, элемент также выбирается.
См. также currentItem() и setCurrentCell().
void QTableWidget::setCurrentItem(QTableWidgetItem *item, QItemSelectionModel::SelectionFlags command)
Устанавливает текущий элемент в item, используя заданную command.
См. также currentItem() и setCurrentCell().
void QTableWidget::setHorizontalHeaderItem(int column, QTableWidgetItem *item)
Устанавливает элемент горизонтальной заголовка для столбца column в item. При необходимости количество столбцов увеличивается для размещения элемента. Предыдущий элемент заголовка (если он был) удаляется.
См. также horizontalHeaderItem().
void QTableWidget::setHorizontalHeaderLabels(const QStringList &labels)
Устанавливает метки горизонтального заголовка, используя labels.
void QTableWidget::setItem(int row, int column, QTableWidgetItem *item)
Устанавливает элемент для заданной строки и столбца в значение элемент.
Таблица принимает владение элементом.
Обратите внимание, что если сортировка включена (см. sortingEnabled) и столбец является текущим столбцом сортировки, строка будет перемещена в отсортированное положение, определяемое элементом.
Если вы хотите установить несколько элементов определенной строки (например, вызывая setItem() в цикле), вы можете отключить сортировку перед этим и включить ее обратно после; это позволит вам использовать один и тот же аргумент строки для всех элементов в одной строке (т.е. setItem() не будет перемещать строку).
См. также item() и takeItem().
void QTableWidget::setItemPrototype(const QTableWidgetItem *item)
Устанавливает шаблон элемента для таблицы в указанный элемент.
Таблица виджет будет использовать функцию клонирования шаблона элемента, когда ей потребуется создать новый элемент таблицы. Например, при редактировании пустой ячейки. Это полезно, когда у вас есть подкласс QTableWidgetItem и вы хотите убедиться, что QTableWidget создает экземпляры вашего подкласса.
Таблица принимает владение шаблоном.
См. также itemPrototype().
void QTableWidget::setRangeSelected(const QTableWidgetSelectionRange &range, bool select)
Выбирает или отменяет выбор диапазона в зависимости от select.
void QTableWidget::setRowCount(int rows)
Устанавливает количество строк в модели этой таблицы в rows. Если это значение меньше, чем rowCount(), данные в нежелательных строках удаляются.
Примечание: Функция-сеттер для свойства rowCount.
См. также rowCount() и setColumnCount().
void QTableWidget::setVerticalHeaderItem(int row, QTableWidgetItem *item)
Устанавливает элемент заголовка по вертикали для строки row в значение item.
См. также verticalHeaderItem().
void QTableWidget::setVerticalHeaderLabels(const QStringList &labels)
Устанавливает метки заголовка по вертикали с помощью labels.
void QTableWidget::sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder)
Сортирует все строки в виджете таблицы на основе column и order.
[virtual protected] Qt::DropActions QTableWidget::supportedDropActions() const
Возвращает действия перемещения, поддерживаемые этим представлением.
См. также Qt::DropActions.
QTableWidgetItem *QTableWidget::takeHorizontalHeaderItem(int column)
Удаляет элемент горизонтального заголовка в столбце column из заголовка без его удаления.
QTableWidgetItem *QTableWidget::takeItem(int row, int column)
Удаляет элемент в строке row и столбце column из таблицы без его удаления.
QTableWidgetItem *QTableWidget::takeVerticalHeaderItem(int row)
Удаляет элемент вертикального заголовка в строке row из заголовка без его удаления.
QTableWidgetItem *QTableWidget::verticalHeaderItem(int row) const
Возвращает элемент вертикального заголовка для строки row.
См. также setVerticalHeaderItem().
int QTableWidget::visualColumn(int logicalColumn) const
Возвращает визуальный столбец для данного logicalColumn.
QRect QTableWidget::visualItemRect(const QTableWidgetItem *item) const
Возвращает прямоугольник на области просмотра, занимаемый элементом в item.
int QTableWidget::visualRow(int logicalRow) const
Возвращает визуальную строку для данного logicalRow.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qtablewidget.html