获取保存文件名
getSaveFileName
1 QString strSaveName = QFileDialog::getSaveFileName(this, 2 tr("保存的文件"), 3 tr("demo.a.txt"), 4 tr("Items files(*.items)"));
1 //保存所有条目到文件
2 void MainWindow::on_pushButtonSave_clicked() 3 { 4 QString strSaveName = QFileDialog::getSaveFileName( 5 this, 6 tr("保存的文件"), 7 tr("."), 8 tr("Items files(*.items)") 9 ); 10 myDebug("strSaveName",strSaveName); 11
12 //判断文件名
13 if( strSaveName.isEmpty() ) 14 { 15 return; 16 } 17
18 //打开要写入的文件
19 QFile fileSave(strSaveName); 20 myDebug("strSaveName",strSaveName); 21 if( ! fileSave.open( QIODevice::WriteOnly )) 22 { 23 //无法打开要写入的文件
24 QMessageBox::warning(this, tr("打开写入文件"), 25 tr("打开要写入的文件失败,请检查文件名和是否具有写入权限!")); 26 return; 27 } 28
29
30 //创建数据流
31 QDataStream dsOut(&fileSave); 32 //先写入列表条目计数
33 qint32 nCount = ui->listWidget->count(); 34 myDebug("nCount",nCount); 35 dsOut << nCount; //没有回车 36 //dsOut << nCount << endl;//有回车 37 //逐个写入条目
38 for(qint32 i=0; i < nCount; i++) 39 { 40 QListWidgetItem *theItem = ui->listWidget->item(i); 41 dsOut<< *theItem; //把条目对象写入数据流,不是写指针数值 42 //数据流仅写入条目通用数据,条目的非通用数据不写入,比如条目的标志位不写
43 } 44 //写入完毕
45 }