restoreState 和 saveState 在 Qt 4.8.2 中不起作用

restoreState and saveState not working in Qt 4.8.2

代码是这样的:

文件 -> Conf.cpp

#include <QWidget>
#include <QSettings>
#include <QMainWindow>


Conf::Conf(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Conf)
{
    ui->setupUi(this);

    //QCoreApplication :: setOrganizationDomain ("OrgDomain");
    //QCoreApplication :: setOrganizationName ("OrgName");
    //QCoreApplication :: setApplicationName ("AppName");
    //QCoreApplication :: setApplicationVersion ("1.0.0");


    QSettings settings;
    restoreGeometry(settings.value("mainWindowGeometry").toByteArray());
    restoreState(settings.value("mainWindowState").toByteArray());

}


Conf::~Conf()
{
    delete ui;
}


void Conf::on_pushButton_clicked()
{

    ......

    QSettings settings;
    settings.setValue("mainWindowGeometry", saveGeometry());
    settings.setValue("mainWindowState", saveState());

    close();

}

文件 -> Conf.h

#include <QWidget>

namespace Ui {
class Conf;
}

class Conf : public QWidget
{
    Q_OBJECT

public:

    explicit Conf(QWidget *parent = 0);
    ~Conf();

private slots:

    void on_pushButton_clicked();

private:
    Ui::Conf *ui;
};

错误:

'restoreStates' 未在此范围内声明

'saveStates' 未在此范围内声明

我认为问题出在库上,因为 "restoreGeometry" 和 "saveGeometry" 工作得很好。

您的 class 继承了 QWidget 但 QWidget 没有任何 restoreState 和 saveState。它在 QMainWindow 中。