Qt 用Qt實現圓角視窗

2021-08-14 20:14:32 字數 752 閱讀 7242

實現該功能主要是呼叫qwidget的成員函式setmask.

我們可以看到qt assistant介紹了兩種setmask方法,這裡我們採用第一種方法。也就是用qbitmap類例項來實現的方面。第二種方法需要自己繪製區域來實現。兩種方法都比較靈活。

在dialog.cpp的建構函式中新增如下**:

setwindowflags(qt::framelesswindowhint);

//設定關於窗體為圓角

qbitmap bmp(this->size());

bmp.fill();

qpainter p(&bmp);

p.setpen(qt::nopen);

p.setbrush(qt::black);

p.drawroundedrect(bmp.rect(),20,20);

setmask(bmp);

注意setwindowflags(qt::framelesswindowhint);是為了將窗體設定為無邊框窗體。你沒有見過乙個帶有標準標題欄的不規則窗體吧!

然後構造乙個qbitmap類物件,再用qpainter類物件在bmp上繪製乙個半徑為20畫素的圓角矩形。

最後呼叫setmask函式。

對了,不要忘了#include 和#include

設定背景

QT實現視窗圓角

實現上邊角圓弧 setwindowflags qt framelesswindowhint qbitmap bmp this size bmp.fill qpainter p bmp p.setpen qt nopen p.setbrush qt black p.setrenderhint qpai...

QT圓角視窗

以前寫的qt圓角都是在paintevent中繪製圓角背景,但是如果圓角附近需要放控制項,控制項就會因為自己的重繪而跑到圓角的外面去了,還有一種辦法就是設定setmask,自己控制 需要顯示,不需要顯示,bmp填充為乙個黑色圓角矩形,就能讓視窗的可見區域侷限於圓角矩形內,即使控制項越界也不會顯示出來。...

qt 設定視窗圓角

最近在用qss做介面美化的工作,發現乙個問題就是qss不能對頂級視窗設定邊角圓弧,於是得另闢蹊徑。據網上搜尋可得到的方法我實現了三種 cpp view plain copy setwindowflags qt framelesswindowhint qbitmap bmp this size bmp...