• 9434阅读
  • 10回复

[提问]Qt图标处理问题 [复制链接]

上一主题 下一主题
离线木头人
 

只看楼主 倒序阅读 楼主  发表于: 2014-06-17
大家好,小弟初学Qt 恰好做到处理ico图标的问题,正常显示是这个样子(Windows7)并且可以放大,但是我加载到我的程序里面(使用QImage 和 QIcon都不行)就变成了这样。还请大家赐教,小弟在此谢过了。
  1. painter->drawImage(rt,m_iconItem.scaled(rt.width(),rt.height()));
我是使用 QPainter 画出来的。不知道如何处理。

离线toby520

只看该作者 1楼 发表于: 2014-06-17
莫非QPainter drawImage不支持icon格式的?
Note: The image is scaled to fit the rectangle, if both the image and rectangle size disagree.

If the image needs to be modified to fit in a lower-resolution result (e.g. converting from 32-bit to 8-bit), use the flags to specify how you would prefer this to happen.
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线toby520

只看该作者 2楼 发表于: 2014-06-17
网上找到一段:
> On Tue, 28 Sep 2010, pmqt71 wrote:
>
>> Hi,
>>
>> I would like to draw an icon using QPainter.
>>
>> Because QPainter has a *drawImage* method but not a *drawIcon*, I need to
>> convert QIcon to QImage.
>>
>> some help?
>
> Use QIcon::pixmap() to get a QPixmap of the icon, and
> use QPainter::drawPixmap().
>
说是将icon转成pixmap在画出来
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线木头人

只看该作者 3楼 发表于: 2014-06-17
回 toby520 的帖子

莫非QPainter drawImage不支持icon格式的?
Note: The image is scaled to fit the rectangle, if both the image and rectangle size disagree.
If the image needs to be modified to fit in a lower-resolution result (e.g. converting from 32-bit to 8-bit), use the flags to specify how you would prefer this to happen.[表情]  

版主大大,即使不适用缩放 效果也是这样。这个图标是32位色深的。

文件我上传了 请版主帮忙看下 ,谢谢啦。
图标 computer.zip (97 K) 下载次数:2
离线木头人

只看该作者 4楼 发表于: 2014-06-17
回 toby520 的帖子
toby520:网上找到一段:
> On Tue, 28 Sep 2010, pmqt71 wrote:
>
>> Hi,
>>
....... (2014-06-17 11:26) 

你说的是 这样么?
painter->drawPixmap(rect, icon.pixmap(QSize(96, 96),QIcon::Normal));

也是不行的。
离线toby520

只看该作者 5楼 发表于: 2014-06-17
我怎么觉得 你这图片本身有些问题啊,我的一个icon 72*72像素的比你的正常的还大?这个icon是你自己切的图片?还是直接使用工具转的icon格式?如果是直接转icon 程序是无法加载的
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线木头人

只看该作者 6楼 发表于: 2014-06-17
回 toby520 的帖子
toby520:我怎么觉得 你这图片本身有些问题啊,我的一个icon 72*72像素的比你的正常的还大?这个icon是你自己切的图片?还是直接使用工具转的icon格式?如果是直接转icon 程序是无法加载的[表情]  (2014-06-17 11:58) 

这个图标是在 一个图标美化包里的其中一个。是在网上下载的。
关键是windows 自己现实 却是这么清晰。Qt加载进来就不清晰了。
离线木头人

只看该作者 7楼 发表于: 2014-06-17
回 toby520 的帖子
toby520:
我怎么觉得 你这图片本身有些问题啊,我的一个icon 72*72像素的比你的正常的还大?这个icon是你自己切的图片?还是直接使用工具转的icon格式?如果是直接转icon 程序是无法加载的[表情]  


问题高明吧了,这个图标里面包含了 很多个,我们使用的时候默认用的是第一个。所以不清楚。第一个是48*48 4位深的。所以不清楚。
那接下来就要搞清楚,怎么才能取到想要的图标。
离线dbzhang800

只看该作者 8楼 发表于: 2014-06-17
回 木头人 的帖子
木头人:[图片]
问题高明吧了,这个图标里面包含了 很多个,我们使用的时候默认用的是第一个。所以不清楚。第一个是48*48 4位深的。所以不清楚。
那接下来就要搞清楚,怎么才能取到想要的图标。 (2014-06-17 12:21) 

你已经知道Icon 中包含多个位图了,剩下的问题就简单了,直接用QIcon的pixmap()成员 获取你想要的位图就行了。 注意选择 pixmap() 成员的参数
离线木头人

只看该作者 9楼 发表于: 2014-06-17
回 dbzhang800 的帖子
dbzhang800:
你已经知道Icon 中包含多个位图了,剩下的问题就简单了,直接用QIcon的pixmap()成员 获取你想要的位图就行了。 注意选择 pixmap() 成员的参数

版主你好,
我的理解是,QIcon 得到的是一组图标,那我该如何获取里面的其中一个呢?
我这得到的还是原来第一个 48*48 的 8位色深的图标。求解。。
离线roywillow

只看该作者 10楼 发表于: 2014-06-17
建议直接用png格式的
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个