在文章(Qt实战案例(26)——利用QTableView表格视图实现右击菜单删除功能)中介绍了利用QTableView表格视图和QStandardItemModel模型类实现右击菜单删除的事件过滤效果。 QTableView组件和QTableWidget组件的区别如下:由于QTableView组件相对QTableWidget组件来说只是不具备编辑功能,其他功能保持一致,QTableView组件支持与数据库建立映射关系,如果表格无需更新则最好可以使用QTableView组件。本文将介绍利用QTableWidget实现表格控件应用功能。
目录
一、项目介绍
- 一、项目介绍
- 二、项目基本配置
- 三、UI界面设置
- 四、主程序实现
- 4.1 widget.h头文件
- 4.2 widget.cpp源文件
- 五、效果演示
本文介绍利用QTableWidget实现表格控件相关功能。
二、项目基本配置新建一个Qt案例,项目名称为“TableWidgetTest”,基类选择“QWidget”,点击选中创建UI界面复选框,完成项目创建。
三、UI界面设置UI界面如下: UI界面控件布局如下:
头文件中声明四个槽函数:
private slots:
void on_pbn_add_clicked();
void on_pbn_del_clicked();
void on_pbn_release_clicked();
void on_pbn_alter_clicked();
4.2 widget.cpp源文件
首先在构造函数中进行初始化并添加进本表格信息:
//表头
QStringList header;
header setEditTriggers(QAbstractItemView::NoEditTriggers); // 设置表结构默认不可编辑
//设置默认为"男"
ui->rbn_male->setChecked(true);
// 填充数据
QStringList NameList; //姓名列表
NameList tableWidget->findItems(username,Qt::MatchExactly).empty();
if(isEmpty)
{
ui->tableWidget->insertRow(0); // 在行首添加一行空列表
ui->tableWidget->setItem(0,0,new QTableWidgetItem(username));
ui->tableWidget->setItem(0,1,new QTableWidgetItem(usersex));
ui->tableWidget->setItem(0,2,new QTableWidgetItem(QString::number(userage)));
ui->tableWidget->setItem(0,3,new QTableWidgetItem(useraddress));
}
}
删除按钮用于删除用户信息,其函数如下:
void Widget::on_pbn_del_clicked()
{
bool isEmpty = ui->tableWidget->findItems(ui->lineEdit_name->text(),Qt::MatchExactly).empty();
if(!isEmpty)
{
// 定位到所在行行号
int row = ui->tableWidget->findItems(ui->lineEdit_name->text(),Qt::MatchExactly).first()->row();
// 释放资源
ui->tableWidget->removeRow(row);
}
}
修改按钮用于修改选中行的用户信息,其函数如下:
void Widget::on_pbn_alter_clicked()
{
QTableWidgetItem *cellItem;
// 取出当前选中行
int curr_row = ui->tableWidget->currentRow();
qDebug()tableWidget->item(curr_row,col);
// 循环输出列名称
qDebug() setText(ui->lineEdit_name->text());
// 判断性别,并分别写回到第1列
if(col == 1)
{
if(ui->rbn_male->isChecked())
cellItem->setText("男");
if(ui->rbn_female->isChecked())
cellItem->setText("女");
}
// 判断年龄,并写回到第3列
if(col == 2)
cellItem->setText(ui->lineEdit_age->text());
if(col == 3)
cellItem->setText(ui->lineEdit_address->text());
}
}
删除某一单元格按钮用于删除选中的单元格进行并释放,其代码如下:
void Widget::on_pbn_release_clicked()
{
int row = ui->tableWidget->currentRow();
qDebug()currentItem();
delete(table);//释放当前单元格
}
五、效果演示
完整效果如下:
如果没有看懂的话,完整代码可以参考:https://download.csdn.net/download/didi_ya/85366012
ok,以上便是本文的全部内容了,如果对你有所帮助,记得点个赞哟~