2012-03-12 52 views
0

我想从.sh文件中读取一些变量并将它们传递给一个数组(也许更好的一个向量,因为我不知道这个长度是多少?)。变量不是环境变量,换句话说,我会单手设置它们。这些变量将被全局使用的方式。在Qt4中使用Bash变量

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

--> You can see the code here. <--

我怎样才能做到这一点,有没有更好的解决办法?


编辑:

我很抱歉,但英语不是我的母语因此其很难解释......

起初它们是文件: Dialog.h,对话框。 CPP和Dialog.ui

然后将这些文件包含以下功能: Query.h和Query.cpp

至少脚本WIC例如,我打电话给variables.sh。 它包含了这样的事情:

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吗?

查询功能通过对话框中的按钮调用。

现在我必须从variables.h中读取变量(这应该在programstart中完成...)。

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

我希望它更清楚了,因为我不知道如何更precicely解释。

感谢您的耐心^^

+0

你能提供一个你有什么和你期望的小例子吗? – 2012-03-12 23:40:41

+0

如果你点击链接,你可以看到我需要变量/数组的函数。 我不希望如此改变函数顶部的C++/Qt数组,以加载basharrays并用它们的内容填充C++数组。我只有链接中显示的功能。所以这是一个更理想的问题... 我可以写一个pseydo代码,如果有帮助吗? – yokmp 2012-03-12 23:52:56

+0

而不是链接到这个问题,为什么你不复制相关的部分?因为现在我认为不清楚哪些部分是(并且不是)相关的。 – ruakh 2012-03-13 00:05:05

回答

1

它可能会更容易使用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(),你就可以遍历所有命令的名字,以便然后读命令和每个名字的图标路径。

+0

这很好。从来没有想过这个简单的解决方案-.- 非常感谢!现在我试着让我的循环完成。 – yokmp 2012-03-13 03:48:36

+0

这解决了我的问题。唯一剩下的就是为贝壳包装写一些包装。谢谢! – yokmp 2012-03-13 19:12:24