2012-06-07 33 views
1

我有點新手,我不能保存和加載工作。 該程序有一些單選按鈕和旋轉框,我希望能夠將這些位置和值保存到一個文件,並能夠稍後再打開它。 這裏是保存:保存Qt應用程序的狀態到一個文件

void MainWindow::on_saveButton_clicked() 
{ 
QString fileName = QFileDialog::getSaveFileName(this, 
    tr("Salvesta Projekt"), "", 
    tr("Latid Pindalaks (*.lp);;All Files (*)")); 

if (fileName.isEmpty()) 
    return; 
else { 
    QFile file(fileName); 
    if (!file.open(QIODevice::WriteOnly)) { 
     QMessageBox::information(this, tr("Unable to open file"), 
      file.errorString()); 
     return; 
    } 
    QDataStream out(&file); 
    out.setVersion(QDataStream::Qt_4_8); 

    QByteArray MyArray = MainWindow::saveState(); 

    out << (MyArray); 
     } 
} 

這裏是加載

void MainWindow::on_loadButton_clicked() 
{ 
QString fileName = QFileDialog::getOpenFileName(this, 
    tr("Ava Projekt"), "", 
    tr("Latid Pindalaks (*.lp);;All Files (*)")); 

if (fileName.isEmpty()) 
    return; 
else { 

    QFile file(fileName); 

    if (!file.open(QIODevice::ReadOnly)) { 
     QMessageBox::information(this, tr("Pole võimalik faili laadida"), 
      file.errorString()); 
     return; 
    } 

    QDataStream in(&file); 
    in.setVersion(QDataStream::Qt_4_8); 

    in >> (MyArray); 

    MainWindow::restoreState(MyArray); 
} 
} 

我知道我在做一些非常錯誤的,所以一個很好的例子將是非常讚賞。

回答

6

QMainWindow文檔指出:

保存此主窗口的工具欄dockwidgets的當前狀態。

這意味着你必須保存和你自己的其他小部件(單選按鈕和什麼)的狀態。

1

QSettings通常用於存儲GUI應用程序的狀態。以下示例說明如何使用QSettings來保存和恢復應用程序主窗口的幾何圖形。

void MainWindow::writeSettings() 
{ 
    QSettings settings("Moose Soft", "Clipper"); 

    settings.beginGroup("MainWindow"); 
    settings.setValue("size", size()); 
    settings.setValue("pos", pos()); 
    settings.endGroup(); 
} 

void MainWindow::readSettings() 
{ 
    QSettings settings("Moose Soft", "Clipper"); 

    settings.beginGroup("MainWindow"); 
    resize(settings.value("size", QSize(400, 400)).toSize()); 
    move(settings.value("pos", QPoint(200, 200)).toPoint()); 
    settings.endGroup(); 
}