我在这里先用文字说明一下,开始一共分为四步
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);
//----------------------------------------------------------------------------------------
}