Qt多元素控件——QTableWidget

发布于:2024-09-19 ⋅ 阅读:(16) ⋅ 点赞:(0)

QTabWidget核心属性、方法和信号

QTableWidget表示一个表格控件,一个表格中包含若干行,每一行包含若干列。

表格中的每一个单元格,是一个QTableWidgetItem对象。

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&) 设置字体

使用示例

页面属性设置:

image-20240916112636768

图形化界面编辑:

image-20240916115501508

同理,如果初始化界面的数据是固定的,可以采用图形化界面方式编辑;

如果需要通过文件/网络加载,就需要通过代码了

代码编辑:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //创建3行  下标必须从0开始
    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);

    //给列设置指定列名
    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("2101"));
    ui->tableWidget->setItem(0, 1, new QTableWidgetItem("张三"));
    ui->tableWidget->setItem(0, 2, new QTableWidgetItem("男"));

    ui->tableWidget->setItem(1, 0, new QTableWidgetItem("2102"));
    ui->tableWidget->setItem(1, 1, new QTableWidgetItem("李四"));
    ui->tableWidget->setItem(1, 2, new QTableWidgetItem("女"));

    ui->tableWidget->setItem(2, 0, new QTableWidgetItem("2103"));
    ui->tableWidget->setItem(2, 1, new QTableWidgetItem("王五"));
    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);
}

void Widget::on_pushButton_earseRow_clicked()
{
    //获取选中行号
    int curRow = ui->tableWidget->currentRow();
    //删除选定行
    ui->tableWidget->removeRow(curRow);
}

void Widget::on_pushButton_insertColumn_clicked()
{
    //获取有多少列
    int colCount = ui->tableWidget->columnCount();
    //对应位置新增列
    ui->tableWidget->insertColumn(colCount);
    //设置列名(从输入框获取)
    const QString& text = ui->lineEdit->text();
    ui->tableWidget->setHorizontalHeaderItem(colCount, new QTableWidgetItem(text));

}

void Widget::on_pushButton_eraseColumn_clicked()
{
    //获取列号
    int curCol = ui->tableWidget->currentColumn();
    //删除列
    ui->tableWidget->removeColumn(curCol);
}

GIF 2024-9-16 12-46-43


网站公告

今日签到

点亮在社区的每一天
去签到