如何在qt表格中删除指定的一行

如图所示,希望实现的功能是选中一行,然后点击设置好的按钮将他删除。大致代码上一个问题有发

img

在界面中添加一个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);
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632