このページでは

QTableWidget Class

QTableWidget クラスは、デフォルトのモデルを備えた項目ベースのテーブルビューを提供します。詳細...

ヘッダー: #include <QTableWidget>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
継承元: QTableView

プロパティ

パブリック関数

QTableWidget(QWidget *parent = nullptr)
QTableWidget(int rows, int columns, 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 setSupportedDragActions(Qt::DropActions actions)
void setVerticalHeaderItem(int row, QTableWidgetItem *item)
void setVerticalHeaderLabels(const QStringList &labels)
void sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder)
Qt::DropActions supportedDragActions() const
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()

protected 関数

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)

[since 6.10] supportedDragActions : Qt::DropActions

このプロパティには、このビューでサポートされているドラッグ操作が格納されます

この列挙型は Qt 6.10 で導入されました。

アクセス関数:

Qt::DropActions supportedDragActions() const
void setSupportedDragActions(Qt::DropActions actions)

Qt::DropActions およびsupportedDropActions()も参照してください 。

メンバ関数のドキュメント

[explicit] QTableWidget::QTableWidget(QWidget *parent = nullptr)

指定されたparent を使用して、新しいテーブルビューを作成します。

QTableWidget::QTableWidget(int rows, int columns, QWidget *parent = nullptr)

指定されたrows およびcolumns 、ならびに指定されたparent を使用して、新しいテーブルビューを作成します。

[virtual noexcept] QTableWidget::~QTableWidget()

QTableWidget を削除します。

[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 によって指定されます。

このシグナルは、mouseTracking がオンになっている場合、またはアイテム内に移動中にマウスボタンが押された場合にのみ発火します。

[signal] void QTableWidget::cellPressed(int row, int column)

このシグナルは、テーブル内のセルが押されたたびに発生します。指定されたrow およびcolumn は、押されたセルを指します。

QWidget *QTableWidget::cellWidget(int row, int column) const

指定されたrow およびcolumn のセルに表示されているウィジェットを返します。

注:テーブルが ウィジェットの所有権を取得します。

関連項目: setCellWidget()

[slot] void QTableWidget::clear()

ビュー内のすべての項目を削除します。これにより、選択項目やヘッダーもすべて削除されます。ヘッダーを削除したくない場合は、QTableWidget::clearContents() を使用してください。テーブルのサイズは変更されません。

[slot] void QTableWidget::clearContents()

ヘッダーに含まれていないすべての項目をビューから削除します。これにより、選択状態もすべて解除されます。表のサイズに変更はありません。

void QTableWidget::closePersistentEditor(QTableWidgetItem *item)

item の永続エディタを閉じます。

openPersistentEditor() およびisPersistentEditorOpen()も参照してください 。

int QTableWidget::column(const QTableWidgetItem *item) const

item に対応する列を返します。

int QTableWidget::columnCount() const

列の数を返します。

注: プロパティ columnCountのゲッター 関数です 。

関連項目: setColumnCount()。

[signal] void QTableWidget::currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)

このシグナルは、現在のセルが変更されるたびに発生します。previousRow およびpreviousColumn で指定されるセルは、直前にフォーカスが当たっていたセルであり、currentRow およびcurrentColumn で指定されるセルは、新しい現在のセルです。

int QTableWidget::currentColumn() const

現在の項目の列を返します。

currentRow() およびsetCurrentCell()も参照してください 。

QTableWidgetItem *QTableWidget::currentItem() const

現在の項目を返します。

setCurrentItem()も参照してください 。

[signal] void QTableWidget::currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)

このシグナルは、現在の項目が変更されるたびに発火します。previous は、直前にフォーカスされていた項目であり、current は新しい現在の項目です。

int QTableWidget::currentRow() const

現在の項目の行を返します。

currentColumn() およびsetCurrentCell()も参照してください 。

[override virtual protected] void QTableWidget::dropEvent(QDropEvent *event)

QTableView::dropEvent (QDropEvent *event)を再実装します。

[virtual protected] bool QTableWidget::dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action)

指定されたrow およびcolumn において、指定されたaction で終了したドラッグ&ドロップ操作によって渡されたdata を処理します。データとアクションがモデルによって処理可能な場合はtrue を返し、そうでない場合はfalse を返します。

supportedDropActions() およびsupportedDragActionsも参照してください 。

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

指定されたflags を使用して、text に一致する項目を検索します。

QTableWidgetItem *QTableWidget::horizontalHeaderItem(int column) const

列の水平ヘッダー項目(column )が設定されている場合はそれを返し、設定されていない場合はnullptr を返します。

setHorizontalHeaderItem()も参照してください 。

QModelIndex QTableWidget::indexFromItem(const QTableWidgetItem *item) const

指定されたitem に関連付けられたQModelIndex を返します。

注: Qt 5.10 以前のバージョンでは 、この関数はconst 以外のitem を引数として受け取っていました。

[slot] void QTableWidget::insertColumn(int column)

column のテーブルに、空の列を挿入します。

[slot] void QTableWidget::insertRow(int row)

row のテーブルに空の行を挿入します。

bool QTableWidget::isPersistentEditorOpen(QTableWidgetItem *item) const

アイテムitem に対して、永続エディタが開かれているかどうかを返します。

openPersistentEditor() およびclosePersistentEditor()も参照してください 。

QTableWidgetItem *QTableWidget::item(int row, int column) const

指定されたrow およびcolumn (設定されている場合)に対応する項目を返します。設定されていない場合は、nullptr を返します。

setItem()も参照してください 。

[signal] void QTableWidget::itemActivated(QTableWidgetItem *item)

この信号は、指定されたitem が有効化されたときに発信されます

QTableWidgetItem *QTableWidget::itemAt(const QPoint &point) const

指定されたpoint にあるアイテムへのポインタを返します。point がテーブルウィジェット内のアイテムで覆われていない場合は、nullptr を返します。

item()も参照してください 。

QTableWidgetItem *QTableWidget::itemAt(int ax, int ay) const

テーブルウィジェットの座標系において、QPoint (ax 、ay )に相当する位置にある項目を返します。指定された点がテーブルウィジェット内の項目で覆われていない場合は、nullptr を返します。

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 がオンになっている場合、またはアイテム内へ移動中にマウスボタンが押された場合にのみ発火します。

QTableWidgetItem *QTableWidget::itemFromIndex(const QModelIndex &index) const

指定されたindex に関連付けられたQTableWidgetItem へのポインタを返します。

[signal] void QTableWidget::itemPressed(QTableWidgetItem *item)

このシグナルは、テーブル内のアイテムが押された際に発火します。指定されたitem は、押されたアイテムそのものです。

const QTableWidgetItem *QTableWidget::itemPrototype() const

テーブルで使用されている項目のプロトタイプを返します。

setItemPrototype()も参照してください 。

[signal] void QTableWidget::itemSelectionChanged()

このシグナルは、選択内容が変更されるたびに発せられます。

selectedItems() およびQTableWidgetItem::isSelected()も参照してください 。

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

tablewidget アイテムのリストを記述するために使用できる MIME タイプのリストを返します。

mimeData()も参照してください 。

void QTableWidget::openPersistentEditor(QTableWidgetItem *item)

指定されたitem のエディタを開きます。編集後もエディタは開いたままになります。

closePersistentEditor() およびisPersistentEditorOpen()も参照してください 。

void QTableWidget::removeCellWidget(int row, int column)

row およびcolumn で指定されたセルに設定されているウィジェットを削除します。

[slot] void QTableWidget::removeColumn(int column)

テーブルから「column 」列とそのすべての項目を削除します。

[slot] void QTableWidget::removeRow(int row)

テーブルから行「row 」とそのすべての項目を削除します。

int QTableWidget::row(const QTableWidgetItem *item) const

item に対応する行を返します。

int QTableWidget::rowCount() const

行数を返します。

注: プロパティ rowCountのゲッター 関数です。

関連項目: setRowCount()。

[slot] void QTableWidget::scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)

必要に応じてビューをスクロールし、item が表示されるようにします。hint パラメータは、操作後にitem を配置する位置をより正確に指定します。

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) にあるセルに設定します。

現在の `selection mode` に応じて、セルが選択される場合もあります。

setCurrentItem()、currentRow()、およびcurrentColumn()も参照してください 。

void QTableWidget::setCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command)

指定されたcommand を使用して、現在のセルを位置(row,column)にあるセルに設定します。

setCurrentItem()、currentRow()、およびcurrentColumn()も参照してください 。

void QTableWidget::setCurrentItem(QTableWidgetItem *item)

現在の項目を「item 」に設定します。

選択モードがNoSelection でない限り、その項目も選択されます。

currentItem() およびsetCurrentCell()も参照してください 。

void QTableWidget::setCurrentItem(QTableWidgetItem *item, QItemSelectionModel::SelectionFlags command)

指定されたcommand を使用して、現在の項目をitem に設定します。

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)

指定されたrow およびcolumn に対応する項目を、item に設定します。

テーブルがその項目の所有権を取得します。

なお、ソートが有効になっている場合(sortingEnabled を参照)、かつcolumn が現在のソート列である場合は、row はitem によって決定されるソート後の位置に移動されます。

特定の行の複数の項目を設定したい場合(たとえば、ループ内で setItem() を呼び出す場合など)、その前にソートを無効にし、その後で再び有効にすることをお勧めします。これにより、同じ行のすべての項目に対して同じrow 引数を使用できるようになります(つまり、setItem() によって行が移動することはありません)。

item() およびtakeItem()も参照してください 。

void QTableWidget::setItemPrototype(const QTableWidgetItem *item)

テーブルのアイテムプロトタイプを、指定されたitem に設定します。

テーブルウィジェットは、新しいテーブル項目を作成する必要がある場合、項目のプロトタイプの clone 関数を使用します。たとえば、ユーザーが空のセルで編集を行っている場合などです。これは、QTableWidgetItem のサブクラスがあり、QTableWidget がそのサブクラスのインスタンスを確実に作成するようにしたい場合に役立ちます。

テーブルはプロトタイプの所有権を取得します。

itemPrototype()も参照してください 。

void QTableWidget::setRangeSelected(const QTableWidgetSelectionRange &range, bool select)

select の設定に応じて、range の選択状態を切り替えます。

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 、supportedDragActions 、およびdropMimeData()も参照してください 。

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 のビジュアル行を返します。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.