QTableWidget入门内容(建立+增删改查)+代码讲解

我在这里先用文字说明一下,开始一共分为四步
step1:设置列数
step2:添加水平表头
step3:设置行数
step4:有了列数行数,就往里边添加就好了
ps:增删改查,我在下边也会写。根据自己需求使用就好!

**

四个步骤对应的代码如下

**
step1:设置列数
step2:添加水平表头
step3:设置行数
其实只要三行代码就好了,我用了一个数组来存表头名。

QStringList list;
list<<"Name"<<"Sex"<<"Age";
ui->tableWidget->setColumnCount(list.size());
ui->tableWidget->setHorizontalHeaderLabels(list); //设置水平表头为list。
ui->tableWidget->setRowCount(10);

然后直接进入最后一步,添加数据

QStringList nameList;
nameList<<"Steven"<<"Tom"<<"Timmy"<<"Judy"<<"Jeson";
QList<QString> sexList;
sexList<<"man"<<"man"<<"man"<<"man"<<"man";
for(int i = 0; i<5; i++){
    int col = 0;
    ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));
    ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));
    ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(i+20)));  //setItem 添加的内容不能有int所以才这样写。
}

这里我要说明一下,用一个for循环,并用数组的方式,比较简洁。
先从0行开始,每一列差一个item。然后进入第一行…然后第二行…按行插入数据。

**

数据的插入,删除和搜索

**

接下来,我们插入新人物。首先,我们需要先判断是否在表里存在这个人。需要用到 findItems( ,Qt::MatchExactly).empty();
在,前加入想要搜索的人物名字或是其他信息。

现在判断好人物是否存在,不存在的话,我们用insertRow()先插入一行,然后在这个插入的空白行,setItem就好了。

bool isEmpy = ui->tableWidget->findItems("Duck",Qt::MatchExactly).empty();
if(isEmpy){
    ui->tableWidget->insertRow(1);
    ui->tableWidget->setItem(1,0,new QTableWidgetItem("Duck"));
    ui->tableWidget->setItem(1,1,new QTableWidgetItem("man"));
    ui->tableWidget->setItem(1,2,new QTableWidgetItem(QString::number(28)));

}
else{
    QMessageBox::about(this,"Warning","Duck is already exist");
}

删除的时候,也要找到想要删除的人物,可以用上边的findItems。
然后找到这个人物的行数,我们用

 ui->tableWidget->findItems("Duck",Qt::MatchExactly).first()->row();

这里的first()表示,叫Duck的人可能有很多,我们只找表中第一个Duck就好了。

然后删除用: removeRow();

int row = ui->tableWidget->findItems("Steven",Qt::MatchExactly).first()->row();
ui->tableWidget->removeRow(row);

基本的 建立,正删改查就好了。。如果想找针对表格的操作,可以在网页上搜索,有很多很多。

我把全部代码都放上来,可以复制。在输入代码前,需要在ui界面里,添加一个table widget就好了

    //----------------------QTableWidget----------------------
    QStringList list;
    list<<"Name"<<"Sex"<<"Age";
    ui->tableWidget->setColumnCount(list.size());
    ui->tableWidget->setHorizontalHeaderLabels(list); //设置水平表头为list。
    ui->tableWidget->setRowCount(10);

    QStringList nameList;
    nameList<<"Steven"<<"Tom"<<"Timmy"<<"Judy"<<"Jeson";
    QList<QString> sexList;
    sexList<<"man"<<"man"<<"man"<<"man"<<"man";
    for(int i = 0; i<5; i++){
        int col = 0;
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(i+20)));  //setItem 添加的内容只能是QString

    }
    //ui->tableWidget->findItems("Duck",Qt::MatchExactly).first()->row();

    bool isEmpy = ui->tableWidget->findItems("Duck",Qt::MatchExactly).empty();
    if(isEmpy){
        ui->tableWidget->insertRow(1);
        ui->tableWidget->setItem(1,0,new QTableWidgetItem("Duck"));
        ui->tableWidget->setItem(1,1,new QTableWidgetItem("man"));
        ui->tableWidget->setItem(1,2,new QTableWidgetItem(QString::number(28)));

    }
    else{
        QMessageBox::about(this,"Warning","Duck is already exist");
    }
//    int row = ui->tableWidget->findItems("Steven",Qt::MatchExactly).first()->row();
//    ui->tableWidget->removeRow(row);

    //----------------------------------------------------------------------------------------
}

在这里插入图片描述

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QMenu 是 Qt 框架中的一个组件,用于实现菜单功能。QTableWidget 也是 Qt 框架中的一个组件,用于实现表格功能。在 QTableWidget增删改查可以通过以下方法实现: 1. 增加行:使用 insertRow() 方法插入新行,并使用 setItem() 方法设置单元格内容。 2. 删除行:使用 removeRow() 方法删除指定行。 3. 修改单元格内容:使用 setItem() 方法设置单元格内容。 4. 查询单元格内容:使用 item() 方法获取单元格内容。 在 QTableWidget 上使用 QMenu 可以实现右键菜单功能,通过添加 QAction 实现增删改查功能。具体实现方法可以参考以下代码: ```cpp // 创建 QMenu 对象 QMenu *menu = new QMenu(this); // 创建 QAction 对象 QAction *addRowAction = new QAction(tr("Add Row"), this); QAction *deleteRowAction = new QAction(tr("Delete Row"), this); QAction *editItemAction = new QAction(tr("Edit Item"), this); QAction *getItemAction = new QAction(tr("Get Item"), this); // 将 QAction 添加到 QMenu 中 menu->addAction(addRowAction); menu->addAction(deleteRowAction); menu->addAction(editItemAction); menu->addAction(getItemAction); // 连接 QAction 的 triggered 信号到相应的槽函数 connect(addRowAction, &QAction::triggered, this, &MainWindow::addRow); connect(deleteRowAction, &QAction::triggered, this, &MainWindow::deleteRow); connect(editItemAction, &QAction::triggered, this, &MainWindow::editItem); connect(getItemAction, &QAction::triggered, this, &MainWindow::getItem); // 将 QMenu 设置为 QTableWidget 的右键菜单 tableWidget->setContextMenuPolicy(Qt::CustomContextMenu); connect(tableWidget, &QTableWidget::customContextMenuRequested, [=](const QPoint& pos){ menu->exec(tableWidget->mapToGlobal(pos)); }); ``` 其中,addRow()、deleteRow()、editItem()、getItem() 分别是实现增删改查功能的槽函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值