ConfigUtils.cpp 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. #include "ConfigUtils.h"
  2. #include <QApplication>
  3. #include <QDebug>
  4. #include <QFile>
  5. #include <QMessageBox>
  6. #include <QSettings>
  7. #include <QString>
  8. /**
  9. * @brief ConfigUtils::setCfgStr 写字符配置值
  10. * @param sFileName ini文件名称
  11. * @param sSecName 组名称
  12. * @param sKey 键名称
  13. * @param sValue 设置值
  14. */
  15. void ConfigUtils::setCfgStr(QString sFileName,
  16. QString sSecName,
  17. QString sKey,
  18. QString sValue)
  19. {
  20. QSettings settings(sFileName, QSettings::IniFormat);
  21. settings.beginGroup(sSecName);
  22. settings.setValue(sKey, sValue);
  23. settings.endGroup();
  24. }
  25. /**
  26. * @brief ConfigUtils::getCfgStr 读取配置字符串
  27. * @param sFileName ini文件名称
  28. * @param sSecName 组名称
  29. * @param sKey 键名称
  30. * @param sDefault 缺省值
  31. * @return 键值对应的字符串
  32. */
  33. QString ConfigUtils::getCfgStr(QString sFileName,
  34. QString sSecName,
  35. QString sKey,
  36. QString sDefault)
  37. {
  38. QString retStr = QLatin1String("");
  39. QSettings settings(sFileName, QSettings::IniFormat);
  40. settings.beginGroup(sSecName);
  41. retStr = settings.value(sKey, sDefault).toString();
  42. settings.endGroup();
  43. return retStr.trimmed();
  44. }
  45. /**
  46. * @brief ConfigUtils::getCfgList 获取配置项目
  47. * @param sFileName ini文件名称
  48. * @param sSecName 组名称
  49. * @param sKeyName 键名称
  50. * @param strings 读取配置的数组值
  51. * @return 读取的个数
  52. */
  53. int ConfigUtils::getCfgList(QString sFileName,
  54. QString sSecName,
  55. QString sKeyName,
  56. QStringList &strings)
  57. {
  58. QSettings settings(sFileName, QSettings::IniFormat);
  59. settings.beginGroup(sSecName);
  60. int iCount = settings.value(sKeyName + "-count").toInt();
  61. QString strValue;
  62. int iRet = 0;
  63. //qDebug()<< "iCount:" << iCount;
  64. for(int i = 0; i < iCount; i ++)
  65. {
  66. strValue = settings.value(sKeyName + "-" + QString::number(i + 1)).toString();
  67. strValue = strValue.trimmed();
  68. //qDebug()<< sKeyName + "-" + QString::number(i + 1) <<"=" << QString::fromLocal8Bit(strValue.toLatin1());
  69. if((strValue.length() != 0) && (strings.indexOf(strValue) < 0))
  70. {
  71. strings << strValue;
  72. iRet ++;
  73. }
  74. }
  75. settings.endGroup();
  76. return iRet;
  77. }
  78. /**
  79. * @brief ConfigUtils::writeCfgList 设置配置项目
  80. * @param sFileName ini文件名称
  81. * @param sSecName 组名称
  82. * @param sKeyName 键名称
  83. * @param strings 写入配置的数组值
  84. */
  85. void ConfigUtils::writeCfgList(QString sFileName,
  86. QString sSecName,
  87. QString sKeyName,
  88. QStringList &strings)
  89. {
  90. QSettings settings(sFileName, QSettings::IniFormat);
  91. settings.beginGroup(sSecName);
  92. settings.setValue(sKeyName + "-count", strings.count());
  93. for (int i = 0; i < strings.count(); i++)
  94. settings.setValue(sKeyName + "-" + QString::number(i + 1), strings.at(i));
  95. settings.endGroup();
  96. }
  97. /**
  98. * @brief ConfigUtils::setCfgInt 写整数配置值
  99. * @param sFileName ini文件名称
  100. * @param sSecName 组名称
  101. * @param sKey 键名称
  102. * @param iValue 设置值
  103. */
  104. void ConfigUtils::setCfgInt(QString sFileName,
  105. QString sSecName,
  106. QString sKey,
  107. int iValue)
  108. {
  109. QSettings settings(sFileName, QSettings::IniFormat);
  110. settings.beginGroup(sSecName);
  111. settings.setValue(sKey, QString::number(iValue));
  112. settings.endGroup();
  113. }
  114. /**
  115. * @brief ConfigUtils::getCfgInt 读取整数配置值
  116. * @param sFileName ini文件名称
  117. * @param sSecName 组名称
  118. * @param sKey 键名称
  119. * @param iDefault 缺省值
  120. * @return 键值对应的字符串
  121. */
  122. int ConfigUtils::getCfgInt(QString sFileName,
  123. QString sSecName,
  124. QString sKey,
  125. int iDefault)
  126. {
  127. int val = iDefault;
  128. QSettings settings(sFileName, QSettings::IniFormat);
  129. settings.beginGroup(sSecName);
  130. val = settings.value(sKey, iDefault).toInt();
  131. settings.endGroup();
  132. return val;
  133. }
  134. /**
  135. * @brief ConfigUtils::setCfgFloat 写字符配置单精度浮点值
  136. * @param sFileName ini文件名称
  137. * @param sSecName 组名称
  138. * @param sKey 键名称
  139. * @param fValue 设置值
  140. */
  141. void ConfigUtils::setCfgFloat(QString sFileName,
  142. QString sSecName,
  143. QString sKey,
  144. float fValue)
  145. {
  146. QSettings settings(sFileName, QSettings::IniFormat);
  147. settings.beginGroup(sSecName);
  148. settings.setValue(sKey, QString::number(fValue));
  149. settings.endGroup();
  150. }
  151. /**
  152. * @brief ConfigUtils::getCfgFloat 读取配置单精度浮点值
  153. * @param sFileName ini文件名称
  154. * @param sSecName 组名称
  155. * @param sKey 键名称
  156. * @param fDefault 缺省值
  157. * @return 键值对应的字符串
  158. */
  159. float ConfigUtils::getCfgFloat(QString sFileName,
  160. QString sSecName,
  161. QString sKey,
  162. float fDefault)
  163. {
  164. float val = fDefault;
  165. QSettings settings(sFileName, QSettings::IniFormat);
  166. settings.beginGroup(sSecName);
  167. val = settings.value(sKey, fDefault).toFloat();
  168. settings.endGroup();
  169. return val;
  170. }
  171. /**
  172. * @brief ConfigUtils::setCfgDouble 写字符配置单精度浮点值
  173. * @param sFileName ini文件名称
  174. * @param sSecName 组名称
  175. * @param sKey 键名称
  176. * @param dValue 设置值
  177. */
  178. void ConfigUtils::setCfgDouble(QString sFileName,
  179. QString sSecName,
  180. QString sKey,
  181. double dValue)
  182. {
  183. QSettings settings(sFileName, QSettings::IniFormat);
  184. settings.beginGroup(sSecName);
  185. settings.setValue(sKey, QString::asprintf("%9.9lf", dValue));
  186. settings.endGroup();
  187. }
  188. /**
  189. * @brief ConfigUtils::getCfgDouble 读取配置单精度浮点值
  190. * @param sFileName ini文件名称
  191. * @param sSecName 组名称
  192. * @param sKey 键名称
  193. * @param dDefault 缺省值
  194. * @return 键值对应的字符串
  195. */
  196. double ConfigUtils::getCfgDouble(QString sFileName,
  197. QString sSecName,
  198. QString sKey,
  199. double dDefault)
  200. {
  201. double val = dDefault;
  202. QSettings settings(sFileName, QSettings::IniFormat);
  203. settings.beginGroup(sSecName);
  204. val = settings.value(sKey, dDefault).toDouble();
  205. settings.endGroup();
  206. return val;
  207. }