2012-08-04 60 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

相关问题