Qt輸入與輸出

Qt輸入與輸出
QSetting 使用
一、 在windows中修改註冊表:
a) 寫註冊表,將程序信息保存到註冊表的Software Inc. Spreadsheet下

QSettings settings("Software Inc.", "Spreadsheet");
settings.setValue("showGrid", showGridAction->isChecked());
settings.setValue("autoRecalc", autoRecalcAction->isChecked());

b) 讀註冊表

QSettings settings("Software Inc.", "Spreadsheet");
bool showGrid = settings.value("showGrid", true).toBool();
bool autoRecalc = settings.value("autoRecalc", true).toBool();

二、 讀寫文件

QSettings settings("./myapp.ini", QSettings::IniFormat);  // ./myapp.ini——同級目錄下的myapp.ini文件
settings.setValue("name",1);

QSettings settings("../myapp.ini",QSettings::IniFormat); //../myapp.ini——上級目錄下的myapp.ini文件
settings.setValue("name",1);

讀寫文件——QDataStream和QTextStream
QDataStream——讀寫二進制文件,讀寫二進制文件時需首先設置Qt的版本。

 bool Spreadsheet::writeFile(const QString &fileName)
  {
       QFile file(fileName); 
       if (!file.open(QIODevice::WriteOnly))	//打開失敗警告 
       {
           QMessageBox::warning(this, tr("Spreadsheet"),
                                tr("Cannot write file %1:\n%2.")
                                .arg(file.fileName())
                                .arg(file.errorString()));
           return false;
       }
   
       QDataStream out(&file);
       out.setVersion(QDataStream::Qt_4_3);	//設置版本,保證讀取寫入格式的一致性
       out << quint32(MagicNumber);	//校準信息
       QApplication::setOverrideCursor(Qt::WaitCursor);	//鼠標等待
       //循環寫入 for (int row = 0; row < RowCount; ++row) {
           for (int column = 0; column < ColumnCount; ++column) {
               QString str = formula(row, column);
               if (!str.isEmpty())
                   out << quint16(row) << quint16(column) << str;
           }
       }
       QApplication::restoreOverrideCursor();		//結束
       return true; 
       }
   
   
   bool Spreadsheet::readFile(const QString &fileName)
    {
       QFile file(fileName);
       if (!file.open(QIODevice::ReadOnly))
        {
           QMessageBox::warning(this, tr("Spreadsheet"),
                                tr("Cannot read file %1:\n%2.")
                                .arg(file.fileName())
                                .arg(file.errorString()));
           return false;
       }
   
       QDataStream in(&file);
       in.setVersion(QDataStream::Qt_4_3);
      
       //校準驗證
       quint32 magic;
       in >> magic;
       if (magic != MagicNumber)
        {
           QMessageBox::warning(this, tr("Spreadsheet"),
                                tr("The file is not a Spreadsheet file."));
           return false;
       }
   
       quint16 row;
       quint16 column;
       QString str;
   
       QApplication::setOverrideCursor(Qt::WaitCursor);       //讀取 
       while (!in.atEnd()) {
           in >> row >> column >> str;
           setFormula(row, column, str);
       }
       QApplication::restoreOverrideCursor();
       return true; 
       }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章