资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
问题:使用 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:explicit 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 widget.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();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_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(:RegEnumValue(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);/关闭注册表
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号