Russian Qt Forum
Ноябрь 23, 2024, 11:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕЩЕНО] QSettings и реестр .Как выбрать конкретный ключ?  (Прочитано 3567 раз)
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]
тут я получил все ключи,а надо только названия программ. Вот пример того ,что выводит программа  на коде выше

Прошу не отправлять меня читать Assistant  и прочее,ибо я уже более 20 часов рыл интернет ,а решения так и не нашел,Хотя на англоязычных сайтах встречались функции ,позволяющие сделать задуманное,однако там писали про QT еще в 2005)) и этих функции уже нет
« Последнее редактирование: Май 03, 2014, 19:50 от denelfkilo1 » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Май 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();
Вы про это говорили? Улыбающийся
« Последнее редактирование: Май 03, 2014, 19:46 от gil9red » Записан

denelfkilo1
Гость
« Ответ #2 : Май 03, 2014, 19:46 »

СПАСИБО ОГРОМНОЕ!!!! Всего одна строка решила мою 25 часовую проблему!!!!!  Строит глазки
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Май 03, 2014, 19:47 »

Подмигивающий
Записан

denelfkilo1
Гость
« Ответ #4 : Май 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  и тд
« Последнее редактирование: Май 03, 2014, 19:51 от denelfkilo1 » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.095 секунд. Запросов: 22.