2012-03-12 4 views
0

.sh 파일의 일부 변수를 읽고 어레이에 전달하고 싶습니다. (어쩌면 벡터가 더 좋을지 모르니까요?). 변수는 환경 변수가 아니며, 다른 말로하면 손으로 설정합니다. 이 변수는 전역에서 사용됩니다.Qt4에서 Bash 변수 사용하기

다음은 QListWidget에 대한 명령, 아이콘 및 이름 목록을 설정하는 데 사용합니다. 항목을 선택하고 버튼을 클릭하면 명령이 실행되고 결과가 QTextEdit에 표시됩니다.

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

은 내가 어떻게 이것을 달성 할 수있는 더 나은 솔루션이있다?


편집 : Dialog.h, 대화 :

임 죄송하지만, 영어는

... 설명하기 하드 이렇게 있습니다 먼저 파일에서 내 모국어가 아닌. 기능을 포함 CPP 및 Dialog.ui 그런

파일 : Query.h 및 Query.cpp는

적어도 스크립트 WIC h는 예를 들어 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를 올바르게 사용해야합니까?

쿼리 기능은 Dialog Ui에서 버튼을 통해 호출됩니다.

이제 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 ... 

그럼 난 내가 더 precicely 그것을 설명하는 방법을 모르고이 없기 때문에 지금은 분명 희망

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

처럼 Query.cpp 내 기능의 일부 루프를 사용해야합니다. bash는 배열보다 당신의 명령을 저장하는 QSettings 및 .ini 파일을 사용하는

감사합니다 양해 ^^

+0

보유하고 보유하고있는 것에 대한 작은 예를 제공 할 수 있습니까? –

+0

링크를 클릭하면 변수/배열이 필요한 기능을 볼 수 있습니다. 나는 함수의 맨 위에있는 C++/Qt 배열을 basharrays을로드하고 해당 내용으로 C++ 배열을 채우는 것으로 변경하려고하지 않습니다. 링크에 표시된 기능 만 있습니다. 그래서 이것은 더 이론적 인 질문입니다 ... 그게 도움이된다면 pseydo 코드를 쓸 수 있습니까? – yokmp

+0

해당 질문에 연결하는 대신 관련 부분을 복사하십시오. 왜냐하면 지금 당장은 어떤 부분이 관련이 있는지 분명하지 않다고 생각하기 때문입니다. – ruakh

답변

1

것이 더 쉬울 것입니다. 예를 들어

: QSettings::childGroups()

[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 
... 

, 당신은 다음 명령과 각 이름의 아이콘 경로를 읽을 수있는 모든 명령 이름을 반복 할 수 있습니다.

+0

잘 작동합니다. 그 간단한 해결책을 절대로 생각하지 마십시오 .- 고마워요! 이제 나는 내 루프를 완성하려고 노력한다. – yokmp

+0

이것은 내 문제를 해결합니다. 남아있는 것만이 쉘에 대한 래퍼 (wrapper)를 작성하는 것입니다. 감사! – yokmp