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