Qt input and output

Qt input and output
QSetting use
: First, modify windows registry
under a) write the registry, the program will save the information to the registry of the Software Inc. Spreadsheet

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

b) read the registry

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

Second, read and write files

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);

Read and write files --QDataStream and QTextStream
QDataStream-- reading and writing binary files, to be set first version of Qt when reading and writing binary files.

 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; 
       }

Guess you like

Origin blog.csdn.net/u011370855/article/details/89393893