如何在启动时运行 Qt 应用程序? [复制]

Posted

技术标签:

【中文标题】如何在启动时运行 Qt 应用程序? [复制]【英文标题】:How to run a Qt application run at startup? [duplicate] 【发布时间】:2012-12-25 13:08:49 【问题描述】:

可能重复:running a qt application at startup

如何在启动时运行 qt 程序以使用户根本看不到桌面? 我正在 linux 中构建我的程序,我想将它分发给 linux 用户。 我想将该代码添加到我的应用程序中,因为客户对 linux 没有任何了解。 我发现QSettings可以做到这一点,是真的吗? QService 呢?我们可以使用这样的简单代码吗?

QSettings  a;
A.setpath(IniFormat,SystemScope,/etc/xdg)

【问题讨论】:

你能澄清一下“根本看不到桌面”吗?您的意思是计算机将启动并运行您的程序而不是登录管理器?或者你需要别的东西?比如阻止用户做一些事情? 我的意思是:用户登录然后我的应用程序自动运行并变成全屏,(我知道如何全屏) 这与QSettings无关。只需让您的应用以全屏模式启动,并将其置于系统的启动位置即可 【参考方案1】:

QSettings 与此零相关,QService 适用于 Symbian 设备。其实你的问题与Qt无关。

您需要做的是在用户的启动文件夹中放置一个 *.desktop 快捷方式或指向应用程序的链接。见:

http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html.

例如,如果我想在登录时启动应用程序/opt/myapp/myapp_executable,我将创建一个包含以下内容的myapp.desktop 文件:

[桌面入口] Exec=/opt/myapp/myapp_executable

并将其放在我的 ~/.config/autostart 目录中。

如果您希望在登录时为每个用户执行它,那么您可以将它放在 /etc/xdg/autostart/.但同样,请检查 XDG 站点,因为如果设置了覆盖默认值的 XDG 环境变量,目录可能会有所不同。

您的问题确实属于http://superuser.com

【讨论】:

我宁愿建议伪装成一个窗口管理器/DE,这样根本就没有桌面。 @DmitryMelnikov 看起来 OP 不知道如何编写这样的应用程序(如果他知道,他可能不会问这个问题。)这是一个 Qt 应用程序,所以很可能它依赖于一个正在运行的桌面及其所有守护进程和服务(窗口管理器、D-Bus、Phonon、Gnome-keyring 等) 好的,但是如果我构建了我的应用程序,并把它交给了我的朋友,所以他把应用程序放在另一个目录中,那我该如何处理呢?他对linux一无所知,他只是想开始exacutable @ErfanTavakoli 然后你应该提供一个安装程序或一个包(*.deb、*.rpm 或任何这个特定的 Linux 发行版使用的)来正确设置它。这与 Windows 并没有什么不同,真的。 我转到 ~/.config/ 但没有任何名为“autostart”的文件夹,然后我创建一个具有此名称的文件夹并将我的 .desktop 文件复制到其中。但我的应用程序从未在启动时运行。有什么问题。【参考方案2】:

如果您使用的是 linux,请使用 cron 启动您的程序,将类似这样的内容添加到 crontab

@reboot /path/to/program

或在用户登录时启动它,将/path/to/program 附加到~/.bashrc~/.bash_profile

【讨论】:

那行不通,因为 cron 执行时桌面尚未运行。 您可以设置 cron 启动 at 命令来延迟启动,例如 at -f /path/to/program now + 1 hour 它不会在登录时启动它。充其量只是一个杂物。 @NikosC。抱歉,我不明白你想要达到什么目的,你能尝试用其他方式解释吗? 我想说的是,cron 无法在 XDM 登录时执行程序。要么太早,要么太晚。

以上是关于如何在启动时运行 Qt 应用程序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在启动时运行 Qt 应用程序

在启动时将 Qt 应用程序作为 Linux 守护程序运行

在 Qt Creator 中启动应用程序之前,如何将我在 Qt for Android 中的 .so 文件复制到 android-build/libs/arm64-v8a 中

如何使用 OpenSSL 部署 QT 应用程序

在启动 Qt5 应用程序的主要 python 脚本之前,如何使用 Pycharm 直接运行资源创建脚本?

Qt - 如何将 Qt 运行时 DLL 复制到输出路径