2012-03-12 49 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