我正在使用Raspbian中的QT创建器创建GUI应用程序。当我单击一个按钮时,我想打开一个外部应用程序,例如终端或浏览器等。
我尝试了很多次
std::system("/usr/share/raspi-ui-overrides/applications/scratch.desktop&");
它说我的权限被拒绝
QDesktopServices::openUrl(QUrl("/usr/share/raspi-ui-overrides/applications/scratch.desktop"));
QDesktopServices::openUrl(QUrl("/usr/share/raspi-ui-overrides/applications/scratch.desktop"));
答案 0 :(得分:1)
我假设问题是关于Raspberry Pi和Raspbian。
在Raspbian中,scratch.desktop
和其他*.desktop
文件不是可执行文件,而只是描述要运行哪个应用程序的文本文件。
示例:
pi@raspberrypi:~ $ cat /usr/share/raspi-ui-overrides/applications/scratch.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
TryExec=scratch
Exec=scratch
Icon=scratch
Terminal=false
Name=Scratch
Comment= Programming system and content development tool
Categories=Application;Development;
MimeType=application/x-scratch-project
您需要使用实际的二进制文件来启动该过程。对于scratch
,它将是/usr/bin/scratch
。对于浏览器,可能是/usr/bin/epiphany-browser
。查看Exec=
文件中的*.desktop
行以查看可执行文件的名称,然后在终端中使用which
来查看其位置:
pi@raspberrypi:~ $ which epiphany-browser
/usr/bin/epiphany-browser
答案 1 :(得分:1)
.desktop文件不可执行,但可作为桌面系统的快捷方式。假设scratch.desktop具有以下内容:
scratch.desktop
[Desktop Entry]
Name=Scratch
Comment= Programming system and content development tool
Exec=scratch
Terminal=false
Type=Application
Icon=scratch
Categories=Development;
MimeType=application/x-scratch-project
然后可执行文件为/usr/bin/scratch
,您可以使用Qt运行它:
QProcess::startDetached("/usr/bin/scratch");
或者:
QProcess::execute("/usr/bin/scratch");