Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1774405
  • 博文数量: 198
  • 博客积分: 4088
  • 博客等级: 上校
  • 技术积分: 2391
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-15 16:29
个人简介

游戏开发,系统架构; 博客迁移到:http://www.jianshu.com/u/3ac0504b3b8c

文章分类

全部博文(198)

文章存档

2017年(1)

2016年(12)

2015年(1)

2014年(3)

2013年(13)

2012年(18)

2011年(150)

分类: C/C++

2011-07-25 10:19:31

int side = qMin(width(), height());
QRegion maskedRegion(width() / 2 - side / 2, height() / 2 - side / 2, side, side, QRegion::Ellipse);
setMask(maskedRegion);
这样就可以将应用程序的界面设置成一个椭圆形状。也就是说,我们调用setMask这个函数,这个函数的参数是什么形状,我们的应用程序就会成为什么形状。我们看看setMask 参数中类型为QRegion对象的最后一个参数,在帮助信息中了解到这个类型可以取两个值,矩形和椭圆。定义如下,enum RegionType { Rectangle, Ellipse }我们将椭圆的宽和高设置为相同大小,就成为了正圆。 而我们再次看看QRegion这个类的构造函数,如下: QRegion () QRegion ( int x, int y, int w, int h, RegionType t = Rectangle ) QRegion ( const QPolygon & a, Qt::FillRule fillRule = Qt::OddEvenFill ) QRegion ( const QRegion & r ) QRegion ( const QBitmap & bm ) QRegion ( const QRect & r, RegionType t = Rectangle ) 我们可以看到,构造一个QRegion不仅可以是举行,椭圆,也可以是多边形,位图等等。 我们再次看看SetMask这个函数 void setMask ( const QBitmap & bitmap ) void setMask ( const QRegion & region ) 其中一个重载函数也可以是位图QBitmap类型,也就是说,这里的形状也可以像我们我们图片的形状一样,各种各样。 在这里需要注意的是,如果我们使用一个普通的bmp或者jpg图片,那么显示的形状应该是一个矩形。但是如果,我们使用png格式的图片,而将我们不需要显示的部分设置为透明,这样就可以出现各种各样的形状了。 QLabel topLevelLabel; QPixmap pixmap(":/images/tux.png"); topLevelLabel.setPixmap(pixmap); topLevelLabel.setMask(pixmap.mask()); setMask这句用在位图类里面是设置遮罩的,如果遮罩图相应位置为1,将不改变原图,如果为0,将不显示。
 
阅读(5122) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~