加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

在qt linux中保存配置

发布时间:2020-12-14 01:13:50 所属栏目:Linux 来源:网络整理
导读:我为 linux写了一个qt应用程序.该应用程序应该在启动时运行 – 我 用桌面输入做了. 但我需要它更复杂: 用户应该检查一个复选框,以便选择应用程序是否在启动时运行. 我怎么想保存他的偏好? 之前的应用程序是wriiten,并将其保存在注册表中. 我从谷歌搜索得到
我为 linux写了一个qt应用程序.该应用程序应该在启动时运行 – 我
用桌面输入做了.

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

我怎么想保存他的偏好?

之前的应用程序是wriiten,并将其保存在注册表中.
我从谷歌搜索得到我应该保存在/等.

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

我对这一切都很陌生,所以我会详细回答.

感谢你.

解决方法

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

此外,请记住/ etc / xdg / autostart用于系统范围的自动运行条目.如果它应该是每用户设置,则应在用户的自动启动目录中创建.desktop文件.要确定其位置,请遵循Desktop Application Autostart Specification,其中要求该位置为$XDG_CONFIG_DIRS / autostart,通常解析为用户家中的.config / autostart目录(但是,如果存在XDG_CONFIG_DIRS环境变量,则应通过首先读取该值然后附加/自动启动它.)

这是一个打印出你想要的程序的示例程序:

#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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读