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 中。
代码是这样的:
文件 -> 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 中。