• 5754阅读
  • 6回复

[提问]我遇到的怪事————关于qt——————求帮助 [复制链接]

上一主题 下一主题
离线yuzhouzhiwai
 

只看楼主 倒序阅读 楼主  发表于: 2011-09-19
怪事1:
两段代码:
   QTextCodec* loc = QTextCodec::codecForLocale();
    QTextCodec::setCodecForCStrings(loc);
    QTextCodec::setCodecForLocale(loc);
    QTextCodec::setCodecForTr(loc);
与*****************************************************

    QTextCodec::setCodecForCStrings("GB2312");
    QTextCodec::setCodecForLocale("GB2312");
    QTextCodec::setCodecForTr("GB2312");
环境:Qt4.3.2    Win7
我知道,第一段代码会比第二段代码要好,原因是QTextCodec::codecForLocale();返回最适合当前环境的编码,但是我觉得第二段代码也应该是没有问题的,关于编码的话,浏览器就可以解释各种编码,难道操作系统不行吗? 在我的机器上GB2312是没有问题的,但是UTF-8就会出现乱码,在我朋友的电脑上,两个都会出现乱码,他的系统是XP,但是没有qt环境(难道是因为没有plugins里面的dll文件?)。这是问题1


怪事2:
关于JPEG格式图片保存问题,我的截图程序基本完成,除了在没有安装qt环境的时候,jpg格式图片保存不成功,保存后位0字节。我的程序QPixmap save保存图片,然后带了Qtcore4.dll和QtGui4.dll两个库,在网上查,说还要有jpeg的库,在plugins\imageformats\qjpeg4.dll  ,就是在执行程序的当前目录下加一个imageformats\qjpeg4.dll,就可以用jpeg格式的图片了,但是我这里仍然不行,这是问题2

我实在是很郁闷,对于怪事1,网上说加上第二段代码就绝对没问题,并且代码放的位置是没问题的,对于怪事2,网上说在执行程序当前目录下加文件夹imageformats然后将qjpeg4.dll放进去就ok,但是在我这里也不行。。。

求帮助
谢谢

离线dbzhang800

只看该作者 1楼 发表于: 2011-09-19
问题一:
两段代码都不好,尤其第一段,超级不好
用到gb2312/gbk/gb18030,程序发布时必须同时发布插件!这是Qt的基本规则,不是问题。

问题二:
因为你的Qt4.3,对此不了解
不清楚该版本和Qt4.5之后在插件路径处理上有没有不同,Qt4.3的Manual中肯定有你要的答案,或者,这个可以帮上你 http://blog.csdn.net/dbzhang800/article/details/6543489

离线roywillow

只看该作者 2楼 发表于: 2011-09-19
用到编码的话就要用到插件里的codecs里的dll的,这一点我最近才发现的。网页能解析各种编码是因为网页里记录了编码信息,codecForHtml我记得能返回对应编码
第二个……会不会是dll版本之类的不对应呢
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线yuzhouzhiwai

只看该作者 3楼 发表于: 2011-09-20
回 1楼(dbzhang800) 的帖子
恩 我也是看的那个页面  

虽然你说第一段代码不好  但是在我这里起作用了啊  因为第二段代码在有些地方就不能用。。。  并且在我本机上只有gb2312可用 这点是不是不应该啊
离线yuzhouzhiwai

只看该作者 4楼 发表于: 2011-09-20
回 2楼(roywillow) 的帖子
版本之类不对应是什么意思?  我的qt程序在没有qt环境下跑  会出现jpeg保存不成功的问题
离线dbzhang800

只看该作者 5楼 发表于: 2011-09-20
Re:回 1楼(dbzhang800) 的帖子
引用第3楼yuzhouzhiwai于2011-09-20 07:51发表的 回 1楼(dbzhang800) 的帖子 :
恩 我也是看的那个页面  
虽然你说第一段代码不好  但是在我这里起作用了啊  因为第二段代码在有些地方就不能用。。。  并且在我本机上只有gb2312可用 这点是不是不应该啊

第一段代码非常不好,因为它没有使用插件,只能在同样local的系统下用,比如你用的简体中文windows,放到港澳台同胞那儿,必然乱码。与Qt跨平台的身份太不相称了。

第二段不好,其实,只要setCodecFor* 设置为同一个东西,这个设计几乎总是有问题的(当然,只不过在同样local的系统下用,你发现不了而已)。至于乱码,和你第二个问题一样,你没有插件意识。不发布插件,必然如此,

至于只有gb2312可用??先去熟悉一点编码的概念吧。概念清楚了,这个一个非常简单的问题,不清楚,那就难了。http://hi.baidu.com/cyclone/blog/item/e48c76099b002ca22eddd4c3.html
离线dbzhang800

只看该作者 6楼 发表于: 2011-09-20
Re:回 2楼(roywillow) 的帖子
引用第4楼yuzhouzhiwai于2011-09-20 07:52发表的 回 2楼(roywillow) 的帖子 :
版本之类不对应是什么意思?  我的qt程序在没有qt环境下跑  会出现jpeg保存不成功的问题

先保证你的插件没问题在谈别的
快速回复
限100 字节
 
上一个 下一个