Класс 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 | очистить() |
| void | очиститьСодержимое() |
| void | вставитьСтолбец(int column) |
| void | вставитьСтроку(int row) |
| void | удалитьСтолбец(int column) |
| void | удалитьСтроку(int row) |
| void | прокрутитьДоЭлемента(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible) |
Сигналы
| void | активированЯчейка(int row, int column) |
| void | измененаЯчейка(int row, int column) |
| void | нажатаЯчейка(int row, int column) |
| void | дваждыНажатаЯчейка(int row, int column) |
| void | введенаЯчейка(int row, int column) |
| void | нажатаЯчейка(int row, int column) |
| void | измененаТекущаяЯчейка(int currentRow, int currentColumn, int previousRow, int previousColumn) |
| void | изменёнТекущийЭлемент(QTableWidgetItem *current, QTableWidgetItem *previous) |
| void | активированЭлемент(QTableWidgetItem *item) |
| void | изменёнЭлемент(QTableWidgetItem *item) |
| void | нажатЭлемент(QTableWidgetItem *item) |
| void | дваждыНажатЭлемент(QTableWidgetItem *item) |
| void | введёнЭлемент(QTableWidgetItem *item) |
| void | нажатЭлемент(QTableWidgetItem *item) |
| void | измененоВыборЭлементов() |
Защищённые функции
| virtual bool | выброситьДанныеMime(int row, int column, const QMimeData *data, Qt::DropAction action) |
| virtual QMimeData * | данныеMime(const QList<QTableWidgetItem *> &items) const |
| virtual QStringList | типыMime() const |
| virtual Qt::DropActions | поддерживаемыеДействияПеретаскивания() const |
Переопределённые защищённые функции
| virtual void | событиеВыброса(QDropEvent *event) override |
| virtual bool | событие(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(). Таблица может быть очищена с помощью функции очистить().
См. также QTableWidgetItem, QTableView и Программирование с помощью моделей/представлений.
Документация свойств
количествоСтолбцов : int
Это свойство содержит количество столбцов в таблице
По умолчанию для таблицы, созданной без количества строк и столбцов, это свойство содержит значение 0.
Функции доступа:
| int | количествоСтолбцов() const |
| void | установитьКоличествоСтолбцов(int columns) |
количествоСтрок : int
Это свойство содержит количество строк в таблице
По умолчанию для таблицы, созданной без количества строк и столбцов, это свойство содержит значение 0.
Функции доступа:
| int | количествоСтрок() const |
| void | установитьКоличествоСтрок(int rows) |
Документация функций-членов
QTableWidget::QTableWidget(int rows, int columns, QWidget *parent = nullptr)
Создаёт новый вид таблицы с заданными rows и columns и с заданным parent.
QTableWidget::QTableWidget(QWidget *parent = nullptr)
Создаёт новый вид таблицы с заданным parent.
[signal] void QTableWidget::активированЯчейка(int row, int column)
Этот сигнал испускается, когда ячейка, указанная по row и column, была активирована
[signal] void QTableWidget::измененаЯчейка(int row, int column)
Этот сигнал испускается всякий раз, когда данные элемента в ячейке, указанной по row и column, изменились.
[signal] void QTableWidget::нажатаЯчейка(int row, int column)
Этот сигнал испускается всякий раз, когда ячейка в таблице нажата. Указанные row и column — это ячейка, которая была нажата.
[signal] void QTableWidget::дваждыНажатаЯчейка(int row, int column)
Этот сигнал испускается всякий раз, когда ячейка в таблице дважды нажата. Указанные row и column — это ячейка, которая была дважды нажата.
[signal] void QTableWidget::cellEntered(int row, int column)
Этот сигнал испускается, когда курсор мыши попадает в ячейку. Ячейка задаётся параметрами row и column.
Этот сигнал испускается только при включённом mouseTracking или при нажатии кнопки мыши во время перемещения в элемент.
[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 — это элемент, в который попал курсор.
Этот сигнал испускается только при включённом mouseTracking или при нажатии кнопки мыши во время перемещения в элемент.
[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)
Устанавливает элемент для заданной строки и столбца в item.
Таблица принимает во владение элемент.
Обратите внимание, что если сортировка включена (см. sortingEnabled) и column является текущим столбцом сортировки, строка будет перемещена в отсортированное положение, определяемое item.
Если вы хотите установить несколько элементов в определенной строке (например, вызывая setItem() в цикле), вы можете отключить сортировку перед этим и включить её после; это позволит вам использовать один и тот же аргумент row для всех элементов в одной строке (т.е. setItem() не будет перемещать строку).
См. также item() и takeItem().
void QTableWidget::setItemPrototype(const QTableWidgetItem *item)
Устанавливает шаблон элемента для таблицы в указанный 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.2/qtablewidget.html