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