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