如图所示,希望实现的功能是选中一行,然后点击设置好的按钮将他删除。大致代码上一个问题有发
在界面中添加一个pushbutton,然后添加点击事件的槽函数,记得在构造函数中重新connect一下。
构造函数中添加如下代码:
connect(ui->pushButton_4,&QPushButton::clicked,this,&MainWindow::on_pushButton_4_clicked); //槽函数的名字修改成你自己的
删除按钮点击事件槽函数代码(同时从文件中删除):
//删除选中的行
void MainWindow::on_pushButton_4_clicked()
{
int row = ui->tableView->currentIndex().row();
QString s ="";
if(row >=0)
{
//写入文件
QFile file("../car.csv");
//以只写、文本、追加的方式打开文件
if(false == file.open(QIODevice::WriteOnly | QIODevice::Text ))
{
//如果打开失败则打印提示信息并退出
qDebug() << "Cannot open file for writing";
return;
}
//创建文本流对象out,将对象file的地址传入
QTextStream out(&file);
QString title = "车辆型号,厂商,车型级别,座位数,排量,变速箱,车身颜色,价格\n";
out << title.toUtf8();
for(int i=0;i<fileData.size();i++)
{
if(i != row)
{
QString s = fileData.at(i);
s.replace('\r','\n'); //替换掉末尾的\r
if(!s.endsWith('\n')) //判断是否已\n结束
s += '\n';
out << s.toUtf8();
}
}
//关闭文件
file.close();
//从tableview中删除
model->removeRow(row);
}
}
while(table->selectedItems().count() > 0){
int rowIdx = table->selectedItems()[0]->row();
table->removeRow(rowIdx);
}