多元素控件QTableWidget
使用QTableWidget表示一个表格控件,一个表格中包含若干行、每一个行又包含若干列。
表格中的每一个单元格,都是一个QTableWidget对象。
- QTableWidget核心方法
方法 | 说明 |
---|---|
item(int row, int column) | 根据⾏数列数获取指定的 QTableWidgetItem* |
setItem(int row, int column, QTableWidget*) | 根据⾏数列数设置表格中的元素 |
currentItem() | 返回被选中的元素 QTableWidgetItem* |
currentRow() | 返回被选中元素是第⼏⾏ |
currentColumn() | 返回被选中元素是第⼏列 |
row(QTableWidgetItem* ) | 获取指定 item 是第⼏⾏ |
column(QTableWidgetItem* ) | 获取指定 item 是第⼏列 |
rowCount() | 获取⾏数 |
columnCount() | 获取列数 |
insertRow(int row) | 在第 row ⾏处插⼊新⾏ |
insertColumn(int column) | 在第 column 列插⼊新列 |
removeRow(int row) | 删除第 row ⾏ |
removeColumn(int column) | 删除第 column 列 |
setHorizontalHeaderItem(int column, QTableWidget*) | 设置指定列的表头 |
setVerticalHeaderItem(int row, QTableWidget*) | 设置指定⾏的表头 |
- QTableWidgetItem核心信号
信号 | 说明 |
---|---|
cellClicked(int row, int column) | 点击单元格时触发 |
cellDoubleClicked(int row, int column) | 双击单元格时触发 |
cellEntered(int row, int column) | ⿏标进⼊单元格时触发 |
currentCellChanged(int row, int column, int previousRow, int previousColumn) | 选中不同单元格时触发 |
- QTableWidgetItem核心方法
方法 | 说明 |
---|---|
row() | 获取当前是第⼏⾏ |
column() | 获取当前是第⼏列 |
setText(const QString&) | 设置⽂本 |
setTextAlignment(int) | 设置⽂本对⻬ |
setIcon(const QIcon&) | 设置图标 |
setSelected(bool) | 设置被选中 |
setSizeHints(const QSize&) | 设置尺⼨ |
setFont(const QFont&) | 设置字体 |
例子:使用QTableWidget新增行与列
(1)设置一个TableWidget、四个按钮、一个lineEdit
(2)当输⼊框内容为空的时候, 显⽰提⽰信息
也可以在属性栏里面设置
(3)构造表格的三行三列
(4)给三行三列创建行名与列名
(5)设置表格中初始化数据
(6)编写四个按钮的slot函数
代码实现
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 当输⼊框内容为空的时候, 显⽰提⽰信息ui->lineEdit->setPlaceholderText("输入新增的行名/列名");// 创建 3 行ui->tableWidget->insertRow(0);ui->tableWidget->insertRow(1);ui->tableWidget->insertRow(2);// 创建 3 列ui->tableWidget->insertColumn(0);ui->tableWidget->insertColumn(1);ui->tableWidget->insertColumn(2);// 创建 3 行的行名ui->tableWidget->setVerticalHeaderItem(0, new QTableWidgetItem("学生1"));ui->tableWidget->setVerticalHeaderItem(1, new QTableWidgetItem("学生2"));ui->tableWidget->setVerticalHeaderItem(2, new QTableWidgetItem("学生3"));// 创建 3 列的列名ui->tableWidget->setHorizontalHeaderItem(0, new QTableWidgetItem("姓名"));ui->tableWidget->setHorizontalHeaderItem(1, new QTableWidgetItem("年龄"));ui->tableWidget->setHorizontalHeaderItem(2, new QTableWidgetItem("性别"));// 初始化表格ui->tableWidget->setItem(0, 0, new QTableWidgetItem("张三"));ui->tableWidget->setItem(0, 1, new QTableWidgetItem("19"));ui->tableWidget->setItem(0, 2, new QTableWidgetItem("男"));ui->tableWidget->setItem(1, 0, new QTableWidgetItem("李四"));ui->tableWidget->setItem(1, 1, new QTableWidgetItem("20"));ui->tableWidget->setItem(1, 2, new QTableWidgetItem("女"));ui->tableWidget->setItem(2, 0, new QTableWidgetItem("王五"));ui->tableWidget->setItem(2, 1, new QTableWidgetItem("20"));ui->tableWidget->setItem(2, 2, new QTableWidgetItem("男"));}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_insertRow_clicked()
{// 获取行数int rowCount = ui->tableWidget->rowCount();// 插入新行ui->tableWidget->insertRow(rowCount);// 获取输入框里的内容const QString& text = ui->lineEdit->text();// 将内容创建为行名ui->tableWidget->setVerticalHeaderItem(rowCount, new QTableWidgetItem(text));
}void Widget::on_pushButton_removeRow_clicked()
{// 获取选中的行数int currentROw = ui->tableWidget->currentRow();// 删除选中的行ui->tableWidget->removeRow(currentROw);
}void Widget::on_pushButton_insertColumn_clicked()
{// 获取列数int columnCount = ui->tableWidget->columnCount();// 插入新列ui->tableWidget->insertColumn(columnCount);// 获取输入框里的内容const QString& text = ui->lineEdit->text();// 将内容创建为列名ui->tableWidget->setHorizontalHeaderItem(columnCount, new QTableWidgetItem(text));
}void Widget::on_pushButton_removeColumn_clicked()
{// 获取选中的列数int currentColum = ui->tableWidget->currentColumn();// 删除选中的列ui->tableWidget->removeColumn(currentColum);
}