qt读取注册表总结

上传人:第*** 文档编号:34613197 上传时间:2018-02-26 格式:DOC 页数:3 大小:40KB
返回 下载 相关 举报
qt读取注册表总结_第1页
第1页 / 共3页
qt读取注册表总结_第2页
第2页 / 共3页
qt读取注册表总结_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《qt读取注册表总结》由会员分享,可在线阅读,更多相关《qt读取注册表总结(3页珍藏版)》请在金锄头文库上搜索。

1、问题:使用 QSettings 时,对于注册表中类似于串口信息中的DeviceSerial0 的这种 key 值,用 value()函数无法读到其 value。分析:QT 在读取注册表时,对于有路径分隔符 “”“/”的 value 都无法读取,应该属于QT 的一个小 bug。解决方法:.h 文件#ifndef WIDGET_H#define WIDGET_H#include #include #include #include #include namespace Ui class Widget;class Widget : public QWidgetQ_OBJECTpublic:expli

2、cit Widget(QWidget *parent = 0);Widget();private:Ui:Widget *ui;QStringList m_listcomboName;HKEY hKey;LPCWSTR subkey;wchar_t keyname256; /键名数组char keyvalue256; /键值数组DWORD keysize,type,valuesize;int indexnum;public:QString getcomm(int index,QString keyorvalue); /读取键名;#endif / WIDGET_H.cpp 文件#include w

3、idget.h#include ui_widget.hWidget:Widget(QWidget *parent) :QWidget(parent), ui(new Ui:Widget)ui-setupUi(this);QString path = HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPSERIALCOMM;QSettings *settings = new QSettings( path, QSettings:NativeFormat);QStringList key = settings-allKeys();int num = (int)key.size()

4、;QString value;for(int i=0; inum; i+)value = getcomm(i, value);m_listcomboNamevalue;Widget:Widget()delete ui;QString Widget:getcomm(int index,QString keyorvalue)/index 为索引号,keyorvalue 为选择返回值应该为 key 还是 valueQString commresult;if(:RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT(HARDWAREDEVICEMAPSERIALCOMM),0,KEY

5、_READ,&hKey)!=0)QString error=Cannot open regedit!;/无法打开注册表时返回 errorreturn error;/if(:RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_READ,&hKey)!=0)QString keymessage;/键名QString message;QString valuemessage;/键值indexnum = index;/要读取键值的索引号keysize=sizeof(keyname);valuesize=sizeof(keyvalue);if(:RegEnumVal

6、ue(hKey,indexnum,keyname,&keysize,0,&type,(BYTE*)keyvalue,&valuesize)=0)/列举键名和值for(int i=0;ikeysize;i+)message=keynamei;keymessage.append(message); / for(int i=0;i=keysize;i+) 读取键名for(int j=0;jvaluesize;j+)if(keyvaluej!=0x00)valuemessage.append(keyvaluej);/for(int j=0;jvaluesize;j+) 读取键值if(keyorvalue=key)commresult=keymessage;if(keyorvalue=value)commresult=valuemessage;elsecommresult=nokey; /if(:RegEnumValue(hKey,indexnum,keyname,&keysize,0,&type,(BYTE*)keyvalue,&valuesize)=0) 列举键名和值return commresult;:RegCloseKey(hKey);/关闭注册表

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号