表格QTableWidget
QTableWidget
是一個(gè)表格控件,行和列交匯形成的每個(gè)單元格,是一個(gè) QTableWidgetItem
對象。
1. QTableWidget屬性
QTableWidget
的屬性只有兩個(gè):
屬性 | 說明 |
---|
rowCount | 當(dāng)前行的個(gè)數(shù)。 |
columnCount | 當(dāng)前列的個(gè)數(shù)。 |
2. QTableWidget信號
信號 | 說明 |
---|
cellClicked(int row, int column) | 點(diǎn)擊單元格時(shí)觸發(fā)。 |
cellDoubleClicked(int row, int column) | 雙擊單元格時(shí)觸發(fā)。 |
cellEntered(int row, int column) | 鼠標(biāo)進(jìn)入單元格時(shí)觸發(fā)。 |
currentCellChanged(int row, int column,int previousRow, int previousColumn) | 選中不同單元格時(shí)觸發(fā)。 |
3. QTableWidget方法
方法 | 說明 |
---|
item(int row, int column) | 根據(jù)行數(shù)列數(shù)獲取單元格的 QTableWidgetItem* 。 |
setItem(int row, int column, QTableWidgetItem*) | 根據(jù)行數(shù)列數(shù)設(shè)置單元格中的元素。 |
currentItem() | 返回被選中的元素 QTableWidgetItem* 。 |
currentRow() | 返回被選中的是第幾行。 |
currentColumn() | 返回被選中的是第幾列。 |
row(QTableWidgetItem*) | 獲取指定 item 是第幾行。 |
column(QTableWidgetItem*) | 獲取指定 item 是第幾列。 |
rowCount() | 獲取行數(shù)。 |
columnCount() | 獲取列數(shù)。 |
insertRow(int row) | 在第 row 行處插入新行(新行變?yōu)榈?row 行)。 |
insertColumn(int column) | 在第 column 列插入新列(新列變?yōu)榈?column 列)。 |
removeRow(int row) | 刪除第 row 行。 |
removeColumn(int column) | 刪除第 column 列。 |
setHorizontalHeaderItem(int column, QTableWidget*) | 設(shè)置指定列的表頭。 |
setVerticalHeaderItem(int row, QTableWidget*) | 設(shè)置指定行的表頭。 |
4. QTableWidgetItem方法
方法 | 說明 |
---|
row() | 獲取當(dāng)前是第幾行。 |
column() | 獲取當(dāng)前是第幾列。 |
setText(const QString&) | 設(shè)置文本。 |
setTextAlignment(int) | 設(shè)置文本對齊。 |
setIcon(const QIcon&) | 設(shè)置圖標(biāo)。 |
setSelected(bool) | 設(shè)置能否被選中。 |
setSizeHints(const QSize&) | 設(shè)置尺寸。 |
setFont(const QFont&) | 設(shè)置字體。 |
5. 使用QTableWidget制作一個(gè)表格編輯器
表格編輯器的大部分功能 Qt 都已經(jīng)提供了,我們只需要制作幾個(gè)添加行首、列首之類的接口即可:
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->lineEdit->setPlaceholderText("輸入新增的列名");
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_addRow_clicked()
{int row =ui->tableWidget->rowCount();ui->tableWidget->insertRow(row);
}void Widget::on_pushButton_addColumn_clicked()
{QString content=ui->lineEdit->text();if(content.isEmpty()){return;}int column =ui->tableWidget->columnCount();ui->tableWidget->insertColumn(column);ui->tableWidget->setHorizontalHeaderItem(column,new QTableWidgetItem(content));}void Widget::on_pushButton_deleteRow_clicked()
{int curRow=ui->tableWidget->currentRow();ui->tableWidget->removeRow(curRow);
}void Widget::on_pushButton_deleteColumn_clicked()
{int curColumn=ui->tableWidget->currentColumn();ui->tableWidget->removeremoveColumn(curColumn);
}
