【问题标题】:restoreState and saveState not working in Qt 4.8.2restoreState 和 saveState 在 Qt 4.8.2 中不起作用
【发布时间】:2015-02-07 14:31:41
【问题描述】:

代码是这样的:

文件 -> 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”完美运行。

【问题讨论】:

    标签: c++ qt savestate


    【解决方案1】:

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

    【讨论】:

    • 非常感谢,但代码的哪些部分需要更改?还是添加另一个类更好?
    • 如果有帮助的话,我正在使用 linux。
    • 您可以在您的主窗口中添加它或发送一个指向您的 Conf 构造函数的指针,而不是在您的 conf 中保存和恢复,保存它然后使用它。
    猜你喜欢
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多