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);

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值