如何在启动时运行 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
文件:
并将其放在我的 ~/.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 Creator 中启动应用程序之前,如何将我在 Qt for Android 中的 .so 文件复制到 android-build/libs/arm64-v8a 中