linux qt绘框,Qt绘制异形窗体
異形窗體即不規則窗體,一般采用png圖片,一般繪制異形窗體分兩步:
1、設置遮罩區
2、繪制圖片
使用png圖片的透明部分作為遮罩區,然后繪制圖片,這樣我們就看到一個只繪制了非透明部分的圖形,廢話少說,以實現繪制一只蝴蝶(蝴蝶為半透明)為例,效果如下:
頭文件:
1: #include
2: class TransDialog : public QWidget
3: {
4:? ? Q_OBJECT
5: public:
6:? ? explicit TransDialog(QWidget *parent = 0);
7:? ? void paintEvent(QPaintEvent *event) ;
8: private:
9:? ? QPixmap m_Pixmap;
10: };
11:
cpp文件:
1: #include "transdialog.h"
2: #include
3: #include
4: #include
5:
6: TransDialog::TransDialog(QWidget *parent) :
7:? ? QWidget(parent,Qt::FramelessWindowHint)
8: {
9:? ? //讓程序背景半透明
10:? ? this->setWindowOpacity(0.5);
11:? ? //加載一幅有部分區域是透明的圖片作為程序的界面
12:? ? m_Pixmap.load("hudie.png");
13:? ? resize(640, 480);
14:? ? //保持圖片跟界面一樣大小
15:? ? m_Pixmap = m_Pixmap.scaled(size());
16: ?//設置自動填充
17:? ? setAutoFillBackground(true);
18:
19:? ? //不規則窗口的關鍵,將圖片透明的地方設為穿透
20:? ? setMask( m_Pixmap.mask() );
21:
22: }
23:
24: void TransDialog::paintEvent(QPaintEvent *event)
25: {
26:? ? //繪制背景圖片
27:? ? QPalette bgPalette = this->palette();
28:? ? bgPalette.setBrush(QPalette::Background,m_Pixmap);
29:? ? this->setPalette(bgPalette);
30: }
Qt 的詳細介紹:請點這里
Qt 的下載地址:請點這里
總結
以上是生活随笔為你收集整理的linux qt绘框,Qt绘制异形窗体的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 域名 都访问了 哪些路由,N
- 下一篇: linux怎么下载yum包,Linux下