获取保存文件名
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 }