QTableWidget
是一个表格控件,行和列交汇形成的每个单元格,是一个 QTableWidgetItem
对象。
QTableWidget
的属性只有两个:
属性 |
说明 |
rowCount |
当前行的个数。 |
columnCount |
当前列的个数。 |
信号 |
说明 |
cellClicked(int row, int column) |
点击单元格时触发。 |
cellDoubleClicked(int row, int column) |
双击单元格时触发。 |
cellEntered(int row, int column) |
鼠标进入单元格时触发。 |
currentCellChanged(int row, int column,int previousRow, int previousColumn) |
选中不同单元格时触发。 |
方法 |
说明 |
item(int row, int column) |
根据行数列数获取单元格的 QTableWidgetItem* 。 |
setItem(int row, int column, QTableWidgetItem*) |
根据行数列数设置单元格中的元素。 |
currentItem() |
返回被选中的元素 QTableWidgetItem* 。 |
currentRow() |
返回被选中的是第几行。 |
currentColumn() |
返回被选中的是第几列。 |
row(QTableWidgetItem*) |
获取指定 item 是第几行。 |
column(QTableWidgetItem*) |
获取指定 item 是第几列。 |
rowCount() |
获取行数。 |
columnCount() |
获取列数。 |
insertRow(int row) |
在第 row 行处插入新行(新行变为第 row 行)。 |
insertColumn(int column) |
在第 column 列插入新列(新列变为第 column 列)。 |
removeRow(int row) |
删除第 row 行。 |
removeColumn(int column) |
删除第 column 列。 |
setHorizontalHeaderItem(int column, QTableWidget*) |
设置指定列的表头。 |
setVerticalHeaderItem(int row, QTableWidget*) |
设置指定行的表头。 |
方法 |
说明 |
row() |
获取当前是第几行。 |
column() |
获取当前是第几列。 |
setText(const QString&) |
设置文本。 |
setTextAlignment(int) |
设置文本对齐。 |
setIcon(const QIcon&) |
设置图标。 |
setSelected(bool) |
设置能否被选中。 |
setSizeHints(const QSize&) |
设置尺寸。 |
setFont(const QFont&) |
设置字体。 |
表格编辑器的大部分功能 Qt 都已经提供了,我们只需要制作几个添加行首、列首之类的接口即可:
cpp
复制代码
#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);
}