CQGUI框架之陰影圓角視窗實作
大家好,我是IT文藝男,來自一線大廠的一執行緒式員
今天給大家講解基于C++/Qt的CQGUI框架的陰影圓角視窗實作,實作效果如下圖所示::

CQGUI開發環境::
- Microsoft Visual Studio 2019
- Qt5.15.1
步驟如下::
一、繼承關系
class LoginPanel : public QDialog
二、視窗屬性
setAttribute(Qt::WA_TranslucentBackground); //設定頂層面板背景透明
setWindowFlags(Qt::FramelessWindowHint); //設定無邊框
setContentsMargins(10, 10, 10, 10);
Qt::WA_TranslucentBackground Indicates that the widget should have a translucent background, i.e., any non-opaque regions of the widgets will be translucent because the widget will have an alpha channel. Setting this flag causes WA_NoSystemBackground to be set. On Windows the widget also needs the Qt::FramelessWindowHint window flag to be set. This flag is set or cleared by the widget's author.
三、設定陰影效果
auto *defaultShadow = new QGraphicsDropShadowEffect();
defaultShadow->setBlurRadius(10.0);
defaultShadow->setColor(QColor(0, 0, 0, 160));
defaultShadow->setOffset(0, 0);
_loginMainFrm->setGraphicsEffect(defaultShadow);
四、設定樣式
QFrame#loginMainFrm>QFrame#leftFrame{
background:rgba(255,255,255,0.9);
border-top-left-radius:6px;
border-top-right-radius:0px;
border-bottom-right-radius:0px;
border-bottom-left-radius:6px;
}
五、事件回應
protected:
void mousePressEvent(QMouseEvent *e) override ;
void mouseReleaseEvent(QMouseEvent *e) override ;
void mouseMoveEvent(QMouseEvent *e) override ;
void closeEvent(QCloseEvent *e) override ;
bool event(QEvent* e) override ;
protected:
bool eventFilter(QObject* o, QEvent* e) override;
今天就講解到這里,按步驟進行梳理,程序很清晰; 更詳細的代碼分析與講解,請關注微信公眾號(itwenyinan),觀看對應的的視頻版講解;謝謝
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/270557.html
標籤:C++
