用Qt实现圆角窗口

 时间:2024-10-12 17:36:50

1、首先,用Qt Creator新建一个基于QDialog类的工程。当然其他类的工程也是可以的,这里为了简单说明,用QDialog来实现。

用Qt实现圆角窗口

2、其实,实现该功能主要是调用QWidget的成员函数setMask。我们来看看Qt Assistant是怎么说的。

用Qt实现圆角窗口

3、我们可以看到Qt Assistant介绍了两种setMask方法,这里我们采用第一种方法。也就是用QBitmap类实例来实现的方面。第二种方法需要自己绘制区域来实现。两种方法都比较灵活。在dialog.cpp的构造函数中添加如下代码: setWindowFlags(Qt::FramelessWindowHint); //设置关于窗体为圆角 QBitmap bmp(this->size()); bmp.fill(); QPainter p(&bmp); p.setPen(Qt::NoPen); p.setBrush(Qt::black); p.drawRoundedRect(bmp.rect(),20,20); setMask(bmp);注意setWindowFlags(Qt::FramelessWindowHint);是为了将窗体设置为无边框窗体。你没有见过一个带有标准标题栏的不规则窗体吧!然后构造一个QBitmap类对象,再用QPainter类对象在bmp上绘制一个半径为20像素的圆角矩形。最后调用setMask函数。对了,不要忘了#include <QBitmap>和#include <QPainter>好了我们来运行程序看看情况。

用Qt实现圆角窗口

4、可以看到,圆角矩形窗口已经有了。可是看不清啊,我们给它加个背景色吧!然后再运行看看!

用Qt实现圆角窗口用Qt实现圆角窗口

5、下面我来试试看用一张圆角的图片来实现一个圆角矩形窗口。先准备一张图片:

用Qt实现圆角窗口

6、然后将刚才的代码注释掉,再添加如下代码:QBitmap bixmap(":/pic/C:/Users/Administrator/Pictures/mask.jpg");setMask(bixmap);注意,setWindowFlags(Qt::FramelessWindowHint);还是必须得有的。运行看看结果。圆角矩形窗口出现了,但是因为图片存在alpha通道信息,所以有半透明的效果。还需要注意的是,图片的路径的引用方式,需要预先将图片已资源的形式添加到项目中。

用Qt实现圆角窗口用Qt实现圆角窗口
  • WinForm如何设置exe图标----C#基础教程
  • wegame错误码22 解决方案
  • 如何去掉sqlserver查询结果中的重复值
  • main方法怎么获取配置文件中的值
  • FastStone Capture截图快捷键使用教程
  • 热门搜索
    如何预防老年痴呆症 如何更换浏览器 浙江卫视直播怎么看 穿越后的淑女生活 鼠标没反应怎么回事 市盈率如何计算 平年和闰年怎么算 30米生活防水 如何剪切视频 如何提高工作执行力