C++ 如何使用QSettings将QString添加到注册表

C++ 如何使用QSettings将QString添加到注册表,c++,qt4,qsettings,C++,Qt4,Qsettings,我一直在开发我的第一个gui应用程序。我需要为所有功能存储一些值,所以我决定使用QSettings并学习如何使用windows注册表。我已经找到了一个关于尺寸和位置的例子,所以我对这里发生的事情有一点了解,但由于某种原因,当我自己尝试时,我无法让它发挥作用。我已经为此苦苦挣扎了几个星期,只是找不到任何关于如何将自己的字符串添加到注册表的好参考。下面是实现这一点所需的所有相关代码。任何正确方向的帮助或指点都将不胜感激。我也有Qt 4或类似的基础知识,但在这个例子中对我没有太大帮助,所以如果有人能快

我一直在开发我的第一个gui应用程序。我需要为所有功能存储一些值,所以我决定使用QSettings并学习如何使用windows注册表。我已经找到了一个关于尺寸和位置的例子,所以我对这里发生的事情有一点了解,但由于某种原因,当我自己尝试时,我无法让它发挥作用。我已经为此苦苦挣扎了几个星期,只是找不到任何关于如何将自己的字符串添加到注册表的好参考。下面是实现这一点所需的所有相关代码。任何正确方向的帮助或指点都将不胜感激。我也有Qt 4或类似的基础知识,但在这个例子中对我没有太大帮助,所以如果有人能快速参考一些与质量相关的文章或更全面的关于更高级Qt主题的作品,我会很有兴趣听到他们,但也不会离主题太远,我肯定有很多好书

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();
}
主窗口

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

我确实还没有使用QSettings,但从代码中似乎遗漏了一些信息

特别是,您必须使用QSettings构造函数提供(从基本用法部分)、组织名称和应用程序名称,如

 QSettings settings("MySoft", "Star Runner");
或者使用QCoreApplication设置,然后使用默认的QSettings构造函数

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

您是否尝试过这些方法中的一种来创建QSettings?

我确实还没有使用QSettings,但从您的代码中似乎遗漏了一些信息

特别是,您必须使用QSettings构造函数提供(从基本用法部分)、组织名称和应用程序名称,如

 QSettings settings("MySoft", "Star Runner");
或者使用QCoreApplication设置,然后使用默认的QSettings构造函数

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

您是否尝试过其中一种方法来创建QSettings?

是的,很抱歉,我忘记了在main函数中建立我的组织/应用程序名称,并使用regedit来确保我的软件正确存储值,QString defaultDirPath除外。是的,很抱歉,我忘了注意,我在main函数中建立了我的组织/应用程序名称,并使用regedit确保我的软件正确地存储了值,QString defaultDirPath除外。