在Qt4中使用Bash变量

Using Bash Variables in Qt4

本文关键字:Bash 变量 Qt4      更新时间:2023-10-16

我想从.sh文件中读取一些变量,并将它们传递给数组(可能更好的是向量,因为我不知道长度?)。这些变量不是环境变量,换句话说,我会按手设置它们。顺便说一下,这些变量将是全局使用的。

之后,我使用它们为QListWidget设置命令、图标和名称列表。我选择一个项目并单击一个按钮,它会执行命令并在QTextEdit中显示结果。

-->你可以在这里看到代码<--

我如何才能做到这一点,有更好的解决方案吗?


编辑:

对不起,英语不是我的母语,所以很难解释。。。

最初的文件是:Dialog.h、Dialog.cpp和Dialog.ui

然后是包含以下功能的文件:Query.h和Query.cpp

至少是我调用variables.sh的Script。它包含这样的东西:

CmdList=("kcmshell4 --list|grep -q kcm_grub2",
         "kcmshell4 --list|grep -q kcm_networkmanagement",
         "which pastebunz",
         "[ -z $ink3_ver ]")
NameList=("kcm_grub2",
          "kcm_networkmanagement",
          "pastebunz",
          "Shellmenu")
IconList=(":/icons/icons/GNU.png",
          ":/icons/icons/networkmanager.png",
          ":/icons/icons/edit-paste.png",
          ":/icons/icons/menu.png")

我不知道这些的长度或内容。所以我应该使用QVector,对吗?

Query函数是通过对话框Ui中的按钮调用的。

现在我必须从变量.h中读取变量(这应该在程序启动时完成…)

for (int i = 0; i < ${#$cmdList[*]}; i++) // where '${#$cmdList[*]}' represents the
{ some magical stuff; }                  //legth or the $CmdList array written in bash ...

然后我必须在Query.cpp中的函数中使用一些循环,比如

QVector<QString> vCmdList;
for (int i = 0; i < vCmdList.size(); i++)
{
    vCmdList[i] = CmdList[i];
}

我希望它现在更清楚,因为我不知道如何更准确地解释它。

感谢您的耐心^^

使用QSettings和.ini文件存储命令可能比使用bash数组更容易。

例如:

[kcm_grub2]
command=kcmshell4 --list|grep -q kcm_grub2
icon=:/icons/icons/GNU.png
[kcm_networkmanagement]
command=kcmshell4 --list|grep -q kcm_networkmanagement
icon=:/icons/icons/networkmanager.png
...

使用QSettings::childGroups(),您将能够迭代所有命令名称,然后读取命令和每个名称的图标路径。