1.最簡單的表格示例:
ui->tableWidget->setRowCount(2);// 設置行數ui->tableWidget->setColumnCount(3);// 設置列數,一定要放在設置行表頭之前QStringList rowHeaderList;// 行表頭rowHeaderList << QStringLiteral("姓名");rowHeaderList << QStringLiteral("性別");rowHeaderList << QStringLiteral("年齡");ui->tableWidget->setHorizontalHeaderLabels(rowHeaderList);// 設置行表頭// 通常不設置列表頭,默認會顯示行號,以下是列表頭的設置
// QStringList columnHeaderList = {QStringLiteral("1"),QStringLiteral("2")}; // 列表頭
// ui->tableWidget->setVerticalHeaderLabels(columnHeaderList);// 設置列表頭
// ui->tableWidget->verticalHeader()->setVisible(false);// 設置列表頭不可見
結果:
2.設置行表頭將表格行填充滿:
// Interactive:用戶可拖動改變列寬(默認);Fixed:固定列寬;Stretch:拉伸自適應列寬;ResizeToContents:根據內容設置列寬ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);// 設置整體表頭拉伸自適應列寬
結果:
3.設置行數(插入行數據時使用):
ui->tableWidget_->setRowCount(3);// 設置表格為 3 行
結果:
4.獲取表格總行數:
int total_row_count = ui->tableWidget_->rowCount();// 表格總行數
5.給單元格設置數據:
// 給單元格設置數據,行數從 0 開始,(row,column)確定一個單元格ui->tableWidget_->setItem(row,column,new QTableWidgetItem(QStringLiteral("數據")));
6.默認單元格中的數據是靠左對齊的,如下設置單元格的數據居中對齊:
QTableWidgetItem* username_item = new QTableWidgetItem(username);username_item->setTextAlignment(Qt::AlignCenter);// 設置單元格的數據居中對齊
7.設置表格行交替顯示背景色:
方式1,可以在設計界面上直接設置:
方式2,使用代碼設置:
ui->tableWidget_->setAlternatingRowColors(true);
結果:
8.顯示和隱藏垂直表頭、水平表頭:
ui->tableWidget_->verticalHeader()->show();// 顯示垂直表頭
ui->tableWidget_->verticalHeader()->hide();ui->tableWidget_->horizontalHeader()->show();// 顯示水平表頭
ui->tableWidget_->horizontalHeader()->hide();
9.設置表格中的單元格是否可編輯:
// 可編輯ui->tableWidget_->setEditTriggers(QAbstractItemView::DoubleClicked |QAbstractItemView::SelectedClicked |QAbstractItemView::EditKeyPressed);// 不可編輯ui->tableWidget_->setEditTriggers(QAbstractItemView::NoEditTriggers);
10.設置點擊單元格時是單元格選中還是行選中:
// 單元格選中
ui->tableWidget_->setSelectionBehavior(QAbstractItemView::SelectItems);
// 行選中
ui->tableWidget_->setSelectionBehavior(QAbstractItemView::SelectRows);
結果1,單元格選中:
結果2,行選中:
11.表格信號:
void QTableWidget::itemClicked(QTableWidgetItem *item);// 點擊單元格后可以獲得單元格的內容(item)
實例:
// 下面的槽函數使用itemClicked(QTableWidgetItem *item)信號傳過來的itemvoid TestTableWidget::ItemClicked(QTableWidgetItem *item){int row = item->row();// 獲取當前點擊的單元格的行QString username = ui->tableWidget_->item(row,0)->text();// 獲取單元格的內容QString gender = ui->tableWidget_->item(row,1)->text();QString age = ui->tableWidget_->item(row,2)->text();}
12.獲取當前選中行并在當前行位置插入空行(插入行數據時使用):
int current_row_index = ui->tableWidget_->currentRow();// 獲取當前選中行ui->tableWidget_->insertRow(current_row_index);// 在當前行位置插入空行
13.刪除當前選中行:
int current_row_index = ui->tableWidget_->currentRow();// 獲取當前選中行ui->tableWidget_->removeRow(current_row_index);// 刪除當前選中行
14.修改單元格數據:
ui->tableWidget_->item(1,0)->setText(username);// 修改第1行第0列的單元格數據