选中并删除多行代码如下(封装为一个删除函数)
void MainWindow:: OnDelete(QTableWidget* pTable) //传入表名
{
if (!pTable)
{
return;
}
std::vector<int> vecItemIndex;//用于保存选中行的行号
QList<QTableWidgetItem*> selections = pTable->selectedItems();
//selectedItems();会选中表格每一项,就是每个小方格
for (int i = 0; i < selections.size(); i++)
{
vecItemIndex.push_back(selections.at(i)->row());//存储选中的行
}
sort(vecItemIndex.rbegin(), vecItemIndex.rend());
vecItemIndex.erase(std::unique(vecItemIndex.begin(), vecItemIndex.end()), vecItemIndex.end());//去除重复的行号
//vecItemindex就存放着得到的行号
int number =0 ;
for (unsigned int k = 0 ; k < vecItemIndex.size(); k++)
{
number=vecItemIndex[k];//存放获取到的行号
int id= ui->tableWidget->item(number,1)->text().toUInt();
//因为删除函数是根据id来删除的,所以我们获取第二列id所在的列就行。
m_ptrStuSql->delStu(id);
}
}
删除选中单行的方法
int i=ui->tableWidget->currentRow();
if(i>=0)
{
int id= ui->tableWidget->item(i,1)->text().toUInt();
m_ptrStuSql->delStu(id);
QMessageBox::information(this,"标题","删除成功");
}
UpdateTab();
return QMainWindow::eventFilter(target, e);
删除方法delstu的代码
bool stuSql::delStu(int id)
{
QSqlQuery sql(m_db);//执行sqllite语句前必须使用此句
//注意字符串字段加引号
auto ret= sql.exec(QString ("delete from student where id=%1").arg(id));
qDebug()<<ret;
return 0;
}