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);

 

 

效果

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

 

posted @ 2020-07-27 10:15  永驻的青春  阅读(1383)  评论(0)    收藏  举报