问题标签 [qsettings]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
391 浏览

c++ - 从 QSettings 派生并存储 QIcon

我尝试使用派生自 QSettings 的类存储 QIcon,如下所示:

setValue("fancy_icon", QIcon::fromTheme("document-new"));

但我有一个错误:

QVariant::save: 无法保存类型 69。

它不起作用。令人惊讶的是,如果我只是构造一个 QSettings 实例并保存 69 个类型(QIcon)元素中的任何一个 - 它工作正常。

问题是 - 为什么现在它起作用了?我怎样才能做得更好?

0 投票
1 回答
1035 浏览

pyqt4 - 使用带有布尔值的 Qsettings 迭代设置字典

嗯,我认为我很聪明地用(Python)字典管理我的 PyQt 设置。这样,我认为我至少可以迭代设置以进行保存和比较。

但是在使用布尔值时我遇到了问题。

我有一个方法

只要 s 中没有任何布尔值,它就可以工作。
如果字典中有布尔值,该函数总是返回 True。

取消注释该print行会显示问题并导致

所以问题是:trueQSettings 返回的这个小写字母是什么,我怎样才能让 Python 正确地将它与布尔值进行比较?

我读到你应该用它toBool()来弥补不同平台上的不同表示。但我不知道如何在这样的循环中做到这一点(即事先不知道要比较什么类型)。

任何提示或解决方案表示赞赏!

0 投票
0 回答
296 浏览

.net - 如何在 Qt 4.8.4 应用程序中使用混合模式 .net 程序集?

在我的 Qt 应用程序中,我使用使用 Microsoft.DirectX 库的 COM 包装的 .net 程序集。当我启动我的应用程序时,它会崩溃并在输出中显示以下详细信息

据我所知,.Net 的 Microsoft.DirectX 库是 1.1 版本,程序集是 4.0,这是问题的根源。

我尝试在简单的 c++ winForms 应用程序中使用这个程序集,通过添加带有以下代码的 app.config 文件解决了同样的问题

但 Qt 似乎不支持 app.config 文件。如何在 Qt 配置中设置这个useLegacyV2RuntimeActivationPolicy ?我尝试通过 QSettings 并没有成功。或者 Qt 可能还有其他一些解决方法?

我还尝试禁用 LoaderLock 异常(Debug->Exceptions->Managed Debugging Assistants)。但它也没有成功。

谢谢

0 投票
1 回答
1385 浏览

symbols - QSettings 将百分比符号添加到组名

我有 ini 格式的 QSettings 对象。
当我settings.beginGroup("GENERAL")在ini文件中写入时,我看到以下内容:
[%General]

为什么会这样?

0 投票
1 回答
2138 浏览

c++ - Qt - 将 QString 路径保存到注册表中的 QSettings

我有一个应用程序,用户可以更改保存文件的默认文件夹。

用户保存文件的文件夹:QString SaveImagesDirectory;

我希望当用户退出应用程序时,SaveImagesDirectory 中的数据将保存在注册表中。

我尝试了以下代码:

问题是当我刷新注册表时,LastSaveImagesDirectory 中没有值。

因此,当我尝试使用以下代码阅读时:

变量 SaveImagesDirectory 只得到QDir::currentPath(). 我查看了注册表,确实LastSaveImagesDirectory没有任何价值。

0 投票
2 回答
5671 浏览

qt - 如果值包含逗号字符,如何使用 QSetting 读取值

在我的 QT 项目中,我正在使用 QSettings 从 .ini 文件中读取值。如果该值包含逗号字符,QSettings 将无法读取它。我应该如何阅读这些价值观?

0 投票
1 回答
7645 浏览

c++ - 向 QSettings 编写和读取自定义类

我需要通过 QSettings 在注册表中存储自定义类的实例。在阅读了 Qt 的文档后,我想我已经实现了所需的功能,但我没有设法保存任何东西。

这是我的自定义类:

保存在注册表中:

从注册表加载:

在注册表中创建了一个新键,但它包含我认为只是类名的十六进制代码...... 在此处输入图像描述

知道如何有效地存储这些值吗?

0 投票
1 回答
668 浏览

qt - 关于 QSettings、qmlRegisterType() 和 setContextProperty 的一些查询

我将尝试通过我目前正在开发的应用程序来解释我的困惑。

我的应用程序(基于 Qt5.1 + Qt Quick Controls)与 Facebook API 交互以管理 Facebook 页面。我试图将 QML 代码(用于 UI)与 C++ 核心尽可能分开。

现在,需要 OAuth2 实现才能与 Facebook API 交互。为此,我有一个 C++ OAuth2 类,其构造函数具有以下签名:

OAuth2::OAuth2(QString appId, QString redirectUrl, QStringList 权限);

现在,由于 OAuth 过程需要一个浏览器,我还实现了一个 OAuthBrowser.qml,它使用 OAuth2 来完成授权。

我有以下选项可以将 OAuth2 类公开给 OAuth2Browser:

  1. 实例化 OAuth2 并使用 setContextProperty() 将实例公开给 OAuth2Browser。但是,这意味着我的 C++ 代码必须处理 UI 代码。更令人费解的问题是 OAuth2Browser 是一个辅助窗口。当用户单击 MainWindow 上的“授权”窗口时,
    AppController C++ 对象(连接到 MainWindow)将启动 OAuth2Browser 窗口。因此,OAuth2Browser 的实例化代码将深入到 AppController 方法中。如果只有 main.cpp 必须处理窗口创建,那就太好了。
  2. 使用 qmlRegisterType()。在这种情况下,我无法将参数传递给构造函数。所以,我必须实现一个初始化 OAuth2 对象的 init() 方法。然后,我会在 OAuth2Browser 的 Component.onCompleted() 方法中调用这个 init() 方法。但是,在这种方法中,我必须将 QSettings 暴露给 UI 代码 - QML 窗口,以便 init() 方法所需的参数可以被取回。我非常怀疑将应用程序设置直接暴露给 QML UI 是否是一个好主意。
  3. 在 OAuth2 构造函数中隐式使用 QSettings。这样,我就不必传递任何参数,并且可以使用 qmlRegisterType()。然而,这意味着我正在“幕后”做一些神奇的事情。我没有显式传递 QSettings 实例,而是在任何我想使用的地方使用它,从而对公共 API 隐藏了初始化细节。

在 IRC 上建议了基于第三个选项的替代方案 - 如果没有将参数传递给构造函数,则使用 initFromSettings() 类型的方法来初始化实例。这样,初始化不会被隐藏,并且 initFromSettings() 可以自信地在其内部使用 QSettings。现在,我可以愉快地使用 qmlRegisterType() 在 QML 中实例化 OAuth2。

那么,更好的方法是什么?

还,

  1. 将 QSettings 直接暴露给 QML UI 是个好主意吗?
  2. 我个人更喜欢 qmlRegisterType() 到 setContextProperty() - 这样,注册类实例的生命周期仅由 QML 维护。但是,由于缺乏对参数化构造函数的支持,前者不太可能使用,除非
    显式使用某种形式的 init() 进行初始化。这是一个好的设计吗?

我提前为一篇冗长的帖子道歉。但我认为最好在这里问。

0 投票
3 回答
5365 浏览

qt - 使用 QSettings 保存 64 位整数

有没有什么巧妙的方法,除了将数字转换为QByteArray,来保存quint64QSettings?问题是QVariant不接受qint64也不quint64

0 投票
1 回答
772 浏览

c++ - Qt 控制台应用程序中配置的标准方法是什么?

在 .Net 中,您通常有一个 app.config 文件并内置了访问配置的方法。

是否有使用 Qt 进行配置的等效标准方法?

例如,假设我的应用程序连接到在线服务器,我希望能够存储连接详细信息(用户定义)。

这是“自己动手”的情况,还是有办法使用 XML 或 Qt 提供的任何其他具有简单读/写方法的格式来存储和读取这些配置?

编辑:为问题添加一些复杂性。这是一个 Linux 控制台应用程序,因此请专门寻找基于文件和透明的配置。