2012-08-04 63 views
1

我一直在研究我的第一個gui應用程序。我需要存儲一些值的所有功能,所以我決定使用QSettings並學習如何使用Windows註冊表。我已經找到了一個大小和位置的例子,所以我對這裏發生的事情有了一些瞭解,但由於某種原因,當我自己嘗試時,我無法實現它。我一直在爲此奮鬥了幾個星期,只是無法找到任何關於如何將我自己的字符串添加到註冊表的好的參考。以下是發生這種情況所需的所有相關代碼。任何幫助或點在正確的方向將不勝感激。此外,我有Qt 4或類似的基礎知識,但在這種情況下對我來說沒有多大的幫助,所以如果任何人有任何快速參考一些質量相關的文章或更先進的QT主題更全面的作品,我會有興趣聽到他們,不要遠離主題,但我相信那裏有很多好書。如何使用QSettings將QString添加到註冊表中

MainWindow.cpp

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) 
{ 
createActions(); 
createMenus(); 
createMainWidget(); 
createIcons(); 
createDocks(); 
createStatusBar(); 

setMinimumSize(950,600); 
setWindowTitle(tr("Black Ops Toolbox: Vrs. 0.0.0.12.01")); 

QString defaultDirPath = ""; 

readSettings(); 
} 

void MainWindow::readSettings() 
{ 
QSettings settings; 
QPoint pos = settings.value("pos", QPoint(25,25)).toPoint(); 
move(pos); 
QSize size = settings.value("size",QSize(1200,900)).toSize(); 
resize(size); 
QString defaultDirPath = settings.value("defaultDirPath", QString("c:/programfiles/")).toString(); 

} 

void MainWindow::writeSettings() 
{ 
QSettings settings; 
settings.setValue("pos",pos()); 
settings.setValue("size",size()); 
settings.setValue("defaultDirPath", QVariant(QString *defaultDirPath).toString()); 
} 

void MainWindow::closeEvent(QCloseEvent *event) 
{ 
writeSettings(); 
} 

MainWindow.h

class MainWindow : public QMainWindow 
{ 
Q_OBJECT 

public: 
explicit MainWindow(QWidget *parent = 0); 

protected: 
void closeEvent(QCloseEvent *event); 

private: 
void createActions(); 
void createActionEvents(); 
void createMenus(); 
void createMainWidget(); 
void createIcons(); 
void createDocks(); 
void createStatusBar(); 
void readSettings(); 
void writeSettings(); 

QString *defaultDirPath; 
}; 

回答

1

我真的沒有使用QSettings還沒有,但是從documentation似乎在你的代碼的一些信息錯過。

特別是,你必須給(從基本用法部分),組織名稱和應用程序名稱,使用QSettings的構造函數,像

QSettings settings("MySoft", "Star Runner"); 

或使用QCoreApplication設置,然後將默認QSettings構造

QCoreApplication::setOrganizationName("MySoft"); 
QCoreApplication::setOrganizationDomain("mysoft.com"); 
QCoreApplication::setApplicationName("Star Runner"); 
... 
QSettings settings; 

您是否嘗試過其中一種方法來創建您的QSettings?

+0

是的對不起,我忘了注意我在主函數中建立我的組織/應用程序名稱,並使用regedit來確保我的軟件正確存儲除QString defaultDirPath以外的值。 – Rob 2012-08-04 13:51:06

相關問題