Russian Qt Forum

Qt => Общие вопросы => Тема начата: denelfkilo1 от Май 03, 2014, 13:36



Название: [РЕЩЕНО] QSettings и реестр .Как выбрать конкретный ключ?
Отправлено: denelfkilo1 от Май 03, 2014, 13:36
Добрый день столкнулся с проблемой,нужно чтобы программа выводила список установленного програмного обспечения на Windows ,пробовал решить данную проблему средствами QT ,с классом QSettings вроде все получилось,но получаю все ключи подряд.Так вот собственно вопрос: как с помошью Qsettings получить ключи  с конкретным именем,например DisplayName.
Код:
[code]
QSettings settings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",QSettings::NativeFormat);
    QStringList keyList = settings.allKeys();
    QStringList valList;
       for(int i=0;i<keyList.size(); i++)
          
          valList.push_back(settings.value(keyList).toString());[/code]
тут я получил все ключи,а надо только названия программ. Вот пример того ,что выводит программа  на коде выше
(http://uploads.ru/VyeIc.jpg)
Прошу не отправлять меня читать Assistant  и прочее,ибо я уже более 20 часов рыл интернет ,а решения так и не нашел,Хотя на англоязычных сайтах встречались функции ,позволяющие сделать задуманное,однако там писали про QT еще в 2005)) и этих функции уже нет


Название: Re: QSettings и реестр .Как выбрать конкретный ключ?
Отправлено: gil9red от Май 03, 2014, 19:41
Код:
    QSettings settings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall", QSettings::NativeFormat);
    QStringList keyList = settings.allKeys().filter( "DisplayName" );
    qDebug() << keyList;
    foreach ( QString key, keyList)
        qDebug() << key << "->" << settings.value( key ).toString();
Вы про это говорили? :)


Название: Re: QSettings и реестр .Как выбрать конкретный ключ?
Отправлено: denelfkilo1 от Май 03, 2014, 19:46
СПАСИБО ОГРОМНОЕ!!!! Всего одна строка решила мою 25 часовую проблему!!!!!  ::)


Название: Re: QSettings и реестр .Как выбрать конкретный ключ?
Отправлено: gil9red от Май 03, 2014, 19:47
;)


Название: Re: QSettings и реестр .Как выбрать конкретный ключ?
Отправлено: denelfkilo1 от Май 03, 2014, 19:48
Код:
QSettings settings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",QSettings::NativeFormat);

    QStringList keyList = settings.allKeys().filter("DisplayName");
    QStringList valList;
       for(int i=0;i<keyList.size(); i++)

          valList.push_back(settings.value(keyList[i]).toString());
        QString listString;
        for (int i = 0;i<valList.size();++i)
        {
                    listString += valList.at(i)+"\n";
        }


              QByteArray ba = listString.toLocal8Bit();
              const char *c_str2 = ba.data();

              ui->textEdit->setText(c_str2);

        };
Вот рабочий код,событие на кнопку выводит инфу в текстедит,соответственно не забываем в заголовок включить QByteArray QString QStrinList  и тд