Использование переменных Bash в Qt4 - PullRequest
0 голосов
/ 13 марта 2012

Я хочу прочитать некоторые переменные из файла .sh и передать их в массив (возможно, лучше вектор, потому что я не буду знать длину?). Переменные не являются окружающими, другими словами, я установлю их для каждой руки. Кстати, эти переменные будут глобальными.

После этого я использую их, чтобы установить команду, значок и список имен для QListWidget. Если я выбираю элемент и нажимаю кнопку, он выполняет команду и отображает результат в QTextEdit.

-> Вы можете увидеть код здесь. <- </a>

Как мне достичь этого и есть ли лучшее решение?


EDIT:

Извините, но английский не является моим родным языком, поэтому его трудно объяснить ...

Сначала файлы, которые: Dialog.h, Dialog.cpp и Dialog.ui

Тогда Файлы, которые содержат функцию: Query.h и Query.cpp

По крайней мере, скрипт, который я называю 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 (это должно быть сделано при запуске программы ...).

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

Надеюсь, теперь все прояснится, потому что я не знаю, как объяснить это более точно.

Спасибо за ваше терпение ^^

1 Ответ

1 голос
/ 13 марта 2012

Вероятно, будет проще использовать 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() вы сможете перебирать все имена команд, чтобы затем прочитать команду и путь к значку для каждого имени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...