Qt QSettings(遍历)读取注册表和ini文件

来源:互联网 发布:java词法分析器 编辑:程序博客网 时间:2024/05/18 00:24

Qt QSettings读取注册表和ini


1.读取注册表,以读取已经安装的软件为例。

已经安装的软件信息的注册表位置:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

[cpp] view plaincopy
  1. void Widget::initSoftWareList()  
  2. {  
  3.     softWareCount=0;  
  4.     softWareList=new QListWidget;  
  5.     softWareList->setFrameShape(QFrame::NoFrame);  
  6.     QSettings reg("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",QSettings::NativeFormat);  
  7.     QStringList groupsList=reg.childGroups();  
  8.     foreach(QString group,groupsList)  
  9.     {  
  10.         reg.beginGroup(group);  
  11.         QString softWareName=reg.value("DisplayName").toString();  
  12.         if(!softWareName.isEmpty())  
  13.         {  
  14.             softWareList->addItem(new QListWidgetItem(softWareName));  
  15.             softWareCount++;  
  16.         }  
  17.         reg.endGroup();  
  18.     }  
  19. }  

主要是要分清childGroups和childKeys。

 

再看看读取开机自启动信息:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

[cpp] view plaincopy
  1. void Widget::initRunOnStart()  
  2. {  
  3.     runOnStartCount=0;  
  4.     runOnStartTree=new QTreeWidget;  
  5.     runOnStartTree->setColumnCount(2);  
  6.     runOnStartTree->setHeaderLabels(QStringList()<<tr("名称")<<tr("位置"));  
  7.     runOnStartTree->setFrameShape(QFrame::NoFrame);  
  8.     QSettings reg("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",QSettings::NativeFormat);  
  9.     QStringList keyList=reg.childKeys();  
  10.     foreach(QString key,keyList)  
  11.     {  
  12.         QString location=reg.value(key).toString();  
  13.         if(!location.isEmpty())  
  14.         {  
  15.             runOnStartTree->addTopLevelItem(new QTreeWidgetItem(QStringList()<<key<<location));  
  16.             runOnStartCount++;  
  17.         }  
  18.     }  
  19. }  

 

2.读取ini文件

[cpp] view plaincopy
  1. void Widget::initIniText()  
  2. {  
  3.     QString text;  
  4.     QSettings iniTest("C:\\Users\\Administrator\\Desktop\\test.ini",QSettings::IniFormat);  
  5.     QStringList groupList=iniTest.childGroups();  
  6.     foreach(QString group,groupList)  
  7.     {  
  8.         iniTest.beginGroup(group);  
  9.         QStringList keyList=iniTest.childKeys();  
  10.         foreach(QString key,keyList)  
  11.         {  
  12.             text+=key+" "+tr(iniTest.value(key).toString().toStdString().c_str());  
  13.         }  
  14.         iniTest.endGroup();  
  15.     }  
  16.     iniText=new QTextEdit(text);  
  17.     iniText->setFrameShape(QFrame::NoFrame);  
  18.     iniText->setReadOnly(true);  
  19. }  

 

0 0