Qt 自定义窗口之背景实现


前言

Qt 要想实现好看的窗口就要自己绘制标题栏,此时需要屏蔽掉系统默认的标题栏并展示自定义的窗口(背景)

本篇随笔仅仅展示如何创建无默认边框、形状为圆角矩形的窗口

 

代码

此代码片段贴在代码贴在构造函数内就可以

 1     this->setGeometry(QRect(100,100,400,500));      //设置窗口位置和尺寸
 2     this->setWindowFlags(Qt::FramelessWindowHint);  //设置边框(包括默认的标题栏)
 3     this->setAutoFillBackground(true);
 4 
 5     //添加背景图片
 6     QPixmap img("../background.jpeg");
 7     QPalette pal;
 8     pal.setBrush(this->backgroundRole(),QBrush(img));
 9     this->setPalette(pal);
10 
11     //设置窗口显示区域
12     QBitmap  bmMask(this->size());
13     QPainter painter(&bmMask);
14     painter.fillRect(rect(),Qt::white);//填充位图矩形框(用白色填充)
15     //在位图上画圆角矩形(用黑色填充)
16     painter.setBrush(Qt::black);
17     painter.setRenderHint(QPainter::Antialiasing);//抗锯齿化设置(你的圆角矩形线条会更丝滑)
18     painter.drawRoundedRect(this->rect(),10,10);
19     //另一种填充方式
20 //    QPainterPath paintpath;
21 //    paintpath.setFillRule(Qt::WindingFill);
22 //    painter.setBrush(Qt::black);
23 //    paintpath.addRoundedRect(QRect(0, 0, this->width(), this->height()), 10, 10);
24 //    painter.fillPath(paintpath, QBrush(Qt::black));
25     setMask(bmMask);

 

 

效果

控件的添加就和在一般窗口上添加是一样的

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM