• 11382阅读
  • 17回复

窗口圆角化 [复制链接]

上一主题 下一主题
离线e2008824
 
只看楼主 正序阅读 楼主  发表于: 2010-11-12
— 本帖被 XChinux 从 Qt 个人作品展示 移动到本区(2010-11-12) —
最近,都在做圆角窗口处理,在网上找了几种方法都没有成功,不知哪位大侠有圆角窗口成功的,指导一下小弟,感激不尽!
离线downstairs

只看该作者 17楼 发表于: 2011-02-26
喜爱编程的猫头鹰
离线downstairs

只看该作者 16楼 发表于: 2011-02-25
QRegion,setMask
喜爱编程的猫头鹰
离线梅克斯
只看该作者 15楼 发表于: 2011-01-13
8楼正解
离线e2008824
只看该作者 14楼 发表于: 2011-01-13
楼上的正解,我现在采用那的方法已经搞出来了
离线roywillow

只看该作者 13楼 发表于: 2010-11-16
Qt助手:
void QWidget::setMask ( const QBitmap & bitmap )

Causes only the pixels of the widget for which bitmap has a corresponding 1 bit to be visible. If the region includes pixels outside the rect() of the widget, window system controls in that area may or may not be visible, depending on the platform.
Note that this effect can be slow if the region is particularly complex.
The following code shows how an image with an alpha channel can be used to generate a mask for a widget:

     QLabel topLevelLabel;
     QPixmap pixmap(":/images/tux.png");
     topLevelLabel.setPixmap(pixmap);
     topLevelLabel.setMask(pixmap.mask());

The label shown by this code is masked using the image it contains, giving the appearance that an irregularly-shaped image is being drawn directly onto the screen.
Masked widgets receive mouse events only on their visible portions.
See also mask(), clearMask(), windowOpacity(), and Shaped Clock Example.

感觉不是个很难的东西吧……不过从来没测试过

paintEvent配合setAttribute(Qt::WA_TranslucentBackground, true)和setWindowFlags(Qt::FramelessWindowHint)(第二个windows下必须,其他不知)还可以实现窗口半透明效果呢,alpha为0的点似乎就是穿透效果
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线zjhcool
只看该作者 12楼 发表于: 2010-11-16
另外 QSS 继承大部分 CSS 的效国,但不是所有的CSS 都能在QSS上实现
我的博客地址: http://newfaction.net
离线zjhcool
只看该作者 11楼 发表于: 2010-11-16
回 10楼(deepstar) 的帖子
利用QSS 去让图片实现border-image 相当不明智的,
Qt 在QSS 效率上存在缺陷,在PC 上固然上没什么影响,但在嵌入式上坚决反对这种做法,此外对图片的缩放等等之类都不建议。
我的博客地址: http://newfaction.net
离线deepstar
只看该作者 10楼 发表于: 2010-11-16
回 8楼(zjhcool) 的帖子
这样子。无法实现 border-image效果!!
楼上的 知道 对QWidget如何实现border-image效果吗
因会爬网而为自己骄傲
离线zjhcool
只看该作者 9楼 发表于: 2010-11-16
另外有问题可以来我网站留言,能帮就帮~~
http://newfaction.net
我的博客地址: http://newfaction.net
离线zjhcool
只看该作者 8楼 发表于: 2010-11-16
代码:

    QPixmap pix(BGPNG);
    QPalette palette;

    palette.setBrush(QPalette::Background, QBrush( pix ) );
    setPalette(palette);
    resize( pix.size() );

我的博客地址: http://newfaction.net
离线deepstar
只看该作者 7楼 发表于: 2010-11-16
楼主,我也在弄这方面的东东,加我QQ.一起研究吧。28070335,注册明:QT
因会爬网而为自己骄傲
离线deepstar
只看该作者 6楼 发表于: 2010-11-16
引用第2楼chena于2010-11-14 00:48发表的  :
用qss boder-image

QWidget 支持boder-image?
QPushButton 可以,这点我试过。可换QWidget的窗口,好象就不灵了。
你是否测试成功过? 请指点一二。
因会爬网而为自己骄傲
离线deathmemory
只看该作者 5楼 发表于: 2010-11-16
回 1楼(zjhcool) 的帖子
将图片做成圆角以后,再怎么办啊?
能贴些代码演示一下吗?谢谢!
离线deathmemory
只看该作者 4楼 发表于: 2010-11-16
大哥们给点完整的代码演示一下吧
离线roywillow

只看该作者 3楼 发表于: 2010-11-14
用mask看看呢?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线chena
只看该作者 2楼 发表于: 2010-11-14
用qss boder-image
离线zjhcool
只看该作者 1楼 发表于: 2010-11-12
= = 将背景图片做成圆角,效率多高,何必用代码去CUT图片
我的博客地址: http://newfaction.net
快速回复
限100 字节
 
上一个 下一个