【问题标题】:QSettings instance failsQSettings 实例失败
【发布时间】:2018-03-22 19:32:47
【问题描述】:

我想知道为什么这段基于虚假公司名称和应用程序名称创建 Qt 设置实例的代码不起作用。

这里是mainwindow.h,还有一个main.cpp,还有mainwindow.cpp,一个.pro文件,一个.ui文件,但是都是完全通用的,因为我新建了一个qwidgets项目看看到底是什么问题是。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSettings>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QSettings these_settings("MySoft","StarRunner");
private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

我所做的只是添加一行代码,QSettings these_settings("MySoft","StarRunner");

此页面http://doc.qt.io/qt-5/qsettings.html#QSettings 显示了我正在尝试创建的实例类型。

错误是:

字符串常量、',' 或 '...' 之前的预期标识符。

【问题讨论】:

  • QSettings these_settings = QSettings("MySoft","StarRunner");产生关于“宏 Q_DISABLE_COPY”的消息

标签: c++ qt settings


【解决方案1】:

您是否启用了 C++11?如果您像这样初始化字段,则需要这样做。
这也应该用大括号而不是括号来完成:

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    QSettings these_settings { "MySoft","StarRunner" };

private:
    Ui::MainWindow *ui;
};

【讨论】:

  • 你确定戴牙套吗?在链接上它显示括号。但我会试试你的建议
  • 带括号的编译器认为这是方法的定义,这就是它抱怨的原因。
  • 你可以在构造函数初始化列表中使用括号。
猜你喜欢
  • 1970-01-01
  • 2017-11-05
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 2010-12-22
  • 2019-08-18
  • 2021-09-03
相关资源
最近更新 更多