在 qt linux 中保存配置

2024-03-11

我为Linux编写了一个qt应用程序。该应用程序应该在启动时运行 - 我 用桌面条目做的。

但我需要它更复杂: 用户应该检查一个复选框,以便选择应用程序是否在启动时运行。

我该如何保存他的偏好?

该应用程序之前是为 Windows 编写的,并且保存在注册表中。 我通过谷歌搜索得知我应该将其保存在 /etc 中。

它应该是什么文件?我如何在我的代码中编写它? 我可以在桌面条目中添加一个条件,还是应该运行一些脚本?

我对这一切都很陌生,所以我将不胜感激详细的答案。

thank u.


对于这种特殊情况,保存控制应用程序是否应在启动时运行的首选项设置是完全没有意义的。自动运行条目桌面文件的存在本身就反映了该首选项的状态。如果该文件存在,请选中该复选框。如果用户取消选中该复选框,您将删除该文件。如果用户选中该复选框,您将创建该文件。就是这样。在首选项存储中复制设置只会导致错误,因为现在您必须保持设置和文件系统中文件的存在同步,并且必须处理各种极端情况。

此外,请记住/etc/xdg/autostart用于系统范围的自动运行条目。如果它应该是每个用户的设置,您应该在用户的自动启动目录中创建 .desktop 文件。要确定其位置,请按照桌面应用程序自动启动规范 http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html,这要求该位置是$XDG_CONFIG_DIRS/autostart,这通常解析为.config/autostart用户主目录中的目录(但是,如果XDG_CONFIG_DIRS环境变量存在,您应该通过先读取该值然后附加来解决它/autostart to it.)

这是一个示例程序,它将打印出您想要的内容:

#include <cstdlib>
#include <iostream>
#include <QtCore/QString>
#include <QtCore/QDir>

#ifndef Q_OS_UNIX
#error This method only makes sense on Unix, use OS-specific handling for other OSes.
#endif

QString getUserXdgConfigDir()
{
  QString result(std::getenv("XDG_CONFIG_DIRS"));
  if (result.isEmpty()) {
    // XDG_CONFIG_DIRS is not defined, we'll use the default value
    // as mandated by http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html
    result = QDir::homePath() + QDir::separator() + ".config";
  }
  return result;
}

QString getUserAutostartDir()
{
  return getUserXdgConfigDir() + QDir::separator() + "autostart";
}

int main(int argc, char *argv[])
{
  std::cout << "User config dir is " << getUserXdgConfigDir().toStdString() << std::endl;
  std::cout << "User autostart dir is " << getUserAutostartDir().toStdString() << std::endl;
  return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 qt linux 中保存配置 的相关文章

随机推荐

  • 缓冲区的字节大小(Javascript / Node)[重复]

    这个问题在这里已经有答案了 如何在 JavaScript 中获取缓冲图像的大小 以字节为单位 我不允许信任客户端的文件大小 并且需要在后端进行验证作为上传验证的一部分 我的设置如下 1 我在客户端上传一个文件并将其从 React 组件发送到
  • C# 如何检查字典中的所有值是否相同?

    我有一个字典 我想编写一个方法来检查该字典中的所有值是否相同 词典类型 Dictionary
  • PostgreSql:获取格式奇怪的“带时区的时间戳”

    我正在将字段类型 带有时区的时间戳 字符串 1858 11 17 01 09 05 0000 插入到表中 并返回 stage 格式化值 05 11 29 04 02 24 这是会话 test gt create table ddtbl va
  • 当 Ruby 中需要文件时,技术上会发生什么?

    如果我有一个名为app rb这需要另一个名为foo rb Ruby 在幕后做了什么来使定义的常量foo rb变得可用在app rb 来自 Yukihiro Matsumoto 的 Ruby 编程语言 使用 load 或 require 加载
  • TrustedInstaller 正在阻止注册表写入 HKCR\DirectShow\MediaObjects\Categories

    我正在尝试安装需要我写入的 DMOHKCR DirectShow MediaObjects Categories 57f2db8b e6bb 4513 9d43 dcd2a6593125 此注册表路径受 TrustedInstaller 保
  • Xcode 4 的调试区域变量列表中的图标是什么意思?

    有谁能够提供 Xcode 4 调试区域变量列表中标记图标的明确指南吗 这是我目前拥有的清单 我不明白他们的意思 这不直观 例如 我有 BOOL 和 NSMutableString 对象 它们都带有绿色的 i 图标 我无法在 Xcode 文档
  • PlayFramework 多个 SLF4J 绑定

    我正在尝试完成一些模型的一些基本单元测试 但是我收到以下错误 现在看来我有两个 SLF4J 绑定 这是因为我使用的是 Mahout 它有一个版本的 SLF4J 而 Play 有它自己的版本 谁能告诉我如何解决这个问题 SLF4J 参见htt
  • 在 WooCommerce 中的产品 (Schema.org) 的结构化数据中添加 ean 代码 (gtin)

    我使用此代码片段在 Woocommerce 的产品架构中显示 gtin 的 ean 值 add filter woocommerce structured data product filter woocommerce structured
  • 将类实例存储到文件/数据库的最佳方法

    将类的实例存储到文件 数据库的最佳方法是什么 我们有一个名为 Command 的基类和大量派生类 用户通过向图形设计器添加命令来创建这些类的实例 他们可以在哪里配置它们 设置属性 然后我们需要一种方法将这些 命令 存储到文件中而不丢失 任何
  • 如何在opencv 4.1.0中实现LSD

    我在我的开放简历项目中实施了 LSD 一切都很顺利 直到我将 opencv 版本从 4 0 0 升级到 4 1 0 现在我得到的错误是 cv2 error OpenCV 4 1 0 io opencv modules imgproc src
  • 是否可以在 Android Studio 中本地调试 Google Play 的应用内结算?

    我在本地测试应用内订阅产品时遇到此错误 需要进行身份验证 您需要登录您的谷歌帐户 我能够检查该产品的库存 但我是否也应该能够购买它 有很多关于为什么会发生此错误的帖子 我认为这些帖子已得到解决 该产品在测试版渠道中发布 并启用应用内计费 我
  • Python,通过提取字符和数字子串来解析字符串

    我有一个字符串 是由某种机器学习算法产生的 通常由多行组成 在开头和结尾处可以有一些不包含任何字符 空格除外 的行 并且在它们之间应该有 2 行 每行包含一个单词 后跟一些数字和 有时 其他字符 像这样的东西 first word 3 5
  • .NET 代码混淆真的值得吗?

    据我所知 代码混淆其实并不难 破解 它只会推迟不可避免的事情 那么 它的目的是什么 如果有人真的想窃取您的资源 他们可以 如果有人出于无害 有用的目的需要查看您的源代码 他们就不能 您可能不应该在代码中存储任何敏感内容 因此这不应该成为问题
  • OFFSET 命令附近的语法不正确

    为什么这不起作用并给我一个 偏移命令附近的语法不正确 错误 SELECT o orderdate o orderid o empid o custid FROM Sales Orders o ORDER BY o orderdate o o
  • 实时绘制 pandas 数据框

    我是新来的matplotlib并尝试显示我通过函数 read API 从 api 下载的三个变量的最后一小时数据的实时图 数据位于带有 DateTimeIndex 的 pandas 数据框中 例如 In dframe head Out A
  • 如何获取ContainerRequest中的会话对象可以使用注释@RolesAllowed(Role_user)?

    我正在使用 App Engine 和 Jersey 构建一个应用程序 我想使用注释 RolesAllowed Role user 谁允许在请求中创建过滤器 问题是我们需要配置类SecurityContextFilter 我的目标是获得id存
  • 编译 Lua - 创建 .so 文件?

    我正在 Centos 6 5 上编译 Lua 5 2 3 编译 安装工作正常 但是 我还需要编译另一个程序的开发库 我通常会通过这样做来安装它们 yum install lua devel 问题是安装 Lua 5 1 共享库 而不是 5 2
  • 是否可以在android的上下文菜单(系统菜单)中添加一些项目

    当我输入一些文本并按住它时 上下文菜单会显示剪切 复制 选择文本等项目 有什么方法可以将我自己的自定义项目添加到此上下文菜单中吗 我不知道这件事是如何工作的 但我想应该可以在清单中注册一些东西 就像注册活动和广播一样 Thanks 欢迎任何
  • Android 房间@Relation 左加入

    假设我有两个实体 问题和答案 它们具有一对多关系 每个问题可能有 0 n 个答案 它们定义为 Entity tableName questions data class Question PrimaryKey val id Long val
  • 在 qt linux 中保存配置

    我为Linux编写了一个qt应用程序 该应用程序应该在启动时运行 我 用桌面条目做的 但我需要它更复杂 用户应该检查一个复选框 以便选择应用程序是否在启动时运行 我该如何保存他的偏好 该应用程序之前是为 Windows 编写的 并且保存在注