• 8990阅读
  • 6回复

[提问]关于在widget上显示图片时自动缩放的问题 [复制链接]

上一主题 下一主题
离线hyqlxf
 

只看楼主 正序阅读 楼主  发表于: 2014-02-21
各位好!
我使用了如下代码重载了resizeEvent函数来实现widget显示图片随widget大小改变而自动变化:
  1. QPalette    palette = this->palette();
  2.     palette.setBrush(this->backgroundRole(),
  3.                     QBrush(this->map.scaled(this->size(),
  4.                     Qt::IgnoreAspectRatio,
  5.                     Qt::SmoothTransformation)));
  6.     this->setPalette(palette);
在这里我使用了IgnoreAspectRatio选项来使图片进行拉伸,但在运行后发现,改变widget大小时图片会被缩放,但一直保持原始长宽比例(没有被拉伸),而且图片会在背景上平铺,即出现很多个大小相同的图片占满背景。
另外我尝试改变IgnoreAspectRatio为KeepAspectRatio后运行结果完全相同。。。
于是我就晕了,特来求教,请各位帮忙~


离线XChinux

只看该作者 6楼 发表于: 2014-02-22
楼主搜一下代码秀版块,我以前发过个ImageWidget部件。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线hyqlxf

只看该作者 5楼 发表于: 2014-02-22
回 toby520 的帖子
toby520:
你是做widget的一张图片铺满整个widget,然后随着widget的缩小放大,这图片也随着缩小放大?

你说的是我希望实现的效果,也是这段代码本来应该实现的效果。
本来scaled里面的参数效果应该如图:


但是现在不论选择KeepAspectRatio还是IgnoreAspectRatio效果都是:


并没有出现拉伸图片或者widget里面出现空白的效果
离线shiziyang

只看该作者 4楼 发表于: 2014-02-21
还是老老实实用paintevent来画吧
离线toby520

只看该作者 3楼 发表于: 2014-02-21
你是做widget的一张图片铺满整个widget,然后随着widget的缩小放大,这图片也随着缩小放大?
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线hyqlxf

只看该作者 2楼 发表于: 2014-02-21
回 toby520 的帖子
toby520:楼主可以试试在widget有个事件叫resizeevent,重写这个应该可以达到效果 (2014-02-21 10:05) 

我就是重载了resizeEvent以后出现了这个问题
离线toby520

只看该作者 1楼 发表于: 2014-02-21
楼主可以试试在widget有个事件叫resizeevent,重写这个应该可以达到效果
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
快速回复
限100 字节
 
上一个 下一个