• 6436阅读
  • 6回复

[提问]QSetting使用困惑 [复制链接]

上一主题 下一主题
离线pzhengwf
 

只看楼主 倒序阅读 楼主  发表于: 2012-03-30

  1. //AMCap.exe使用之前的配置
  2. void Widget::amcapConfig()
  3. {
  4.     QSettings *iniFile = new QSettings("C:\\AMCapF\\AMCapF.ini",QSettings::IniFormat);
  5.     QString dt = QDate::currentDate().toString("yyyyMMdd");
  6.     QString filename = QTime::currentTime().toString("hhmmsszzz");
  7.     filename = "D:\\Video\\" + dt + filename + ".avi" ;
  8.     iniFile->beginGroup("AMCap");
  9.     iniFile->setValue("CaptureFile",filename); //视频文件名称
  10.     iniFile->setValue("WantPreview",1);  //打开预览
  11.     iniFile->setValue("UseTimeLimit",1); //采集时间限制九个小时
  12.     iniFile->setValue("TimeLimit",32400);
  13.     iniFile->setValue("RememberPos",1);  //设置窗口位置
  14.     QStringList winPos = iniFile->value("WindowPos","Default").toStringList();
  15.     winPos[6] = QString::number(0);
  16.     winPos[7] = QString::number(0);
  17.     winPos[8] = QString::number(480);
  18.     winPos[9] = QString::number(480);
  19.     iniFile->setValue("WindowPos",winPos);  //读写数组的方法,转换为QStringList,再写入
  20.     iniFile->endGroup();
  21. }
  22. 这种方式配置,编译运行时无法通过,总是出现致命错误,显示如下:

把该函数内容注释后即可运行。


我的使用上出了问题?我的版本QT4.8,XPSP3

离线pzhengwf

只看该作者 1楼 发表于: 2012-03-30
  1. void Widget::amcapConfig()
  2. {
  3.     QSettings *iniFile = new QSettings("C:\\AMCapF\\AMCapF.ini",QSettings::IniFormat);
  4.     QString dt = QDate::currentDate().toString("yyyyMMdd");
  5.     QString filename = QTime::currentTime().toString("hhmmsszzz");
  6.     filename = "D:\\Video\\" + dt + filename + ".avi" ;
  7.     QStringList winPos;
  8.     winPos << "0" << "1" << "-1" << "-1"<<"-1" << "-1" << "0" << "0" << "480"<<"480";
  9.     iniFile->setValue("AMCap/CaptureFile",filename); //视频文件名称
  10.     iniFile->setValue("AMCap/WantPreview",1);  //打开预览
  11.     iniFile->setValue("AMCap/UseTimeLimit",1); //采集时间限制九个小时
  12.     iniFile->setValue("AMCap/TimeLimit",32400);
  13.     iniFile->setValue("AMCap/RememberPos",1);  //设置窗口位置
  14.     iniFile->setValue("AMCap/WindowPos",winPos);  //读写数组的方法,转换为QStringList,再写入
  15. }

修改了格式,这样就过去了,,,解决!
只是不知为什么会这样。求各位大神解释?



离线xuweistudy
只看该作者 2楼 发表于: 2012-03-30
问题出在这里吧!
QStringList winPos = iniFile->value("WindowPos","Default").toStringList();
    winPos[6] = QString::number(0);
    winPos[7] = QString::number(0);
    winPos[8] = QString::number(480);
    winPos[9] = QString::number(480);
离线dbzhang800

只看该作者 3楼 发表于: 2012-03-30
引用第2楼xuweistudy于2012-03-30 09:58发表的  :
问题出在这里吧!
QStringList winPos = iniFile->value("WindowPos","Default").toStringList();
    winPos[6] = QString::number(0);
    winPos[7] = QString::number(0);
    winPos[8] = QString::number(480);
.......

恩,很明显,这儿winPos默认长度为1(只有一个"Default"),但是紧接着6、7、8都用上了。
离线淳于半邪

只看该作者 4楼 发表于: 2012-03-30
问题已经知道了,哇!羡慕你们都用4.8了
离线passion_wu
只看该作者 5楼 发表于: 2012-03-30
回 4楼(淳于半邪) 的帖子
你 out 啦,4.8.1都出来了。
离线淳于半邪

只看该作者 6楼 发表于: 2012-03-30
回 5楼(passion_wu) 的帖子
是啊!公司做的系统还没升级啊!
快速回复
限100 字节
 
上一个 下一个