前言
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);
效果
控件的添加就和在一般窗口上添加是一样的