QT绘制阴影

作者: c之气三段 | 来源:发表于2021-03-18 09:47 被阅读0次

新建一个阴影类,将这个类作为阴影背景
.h

class ShadowWindow : public QWidget
{
    Q_OBJECT

public:
    ShadowWindow(QWidget *parent=0);
    ~ShadowWindow();
protected:
    void paintEvent(QPaintEvent* event);
};

.cpp

#include "stdafx.h"
#include "ShadowWindow.h"

#include"PWindow.h"
ShadowWindow::ShadowWindow(QWidget *parent)
    : QWidget(parent)
{
    this->setWindowFlags(Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint);
    this->resize(620, 420);//背景大于子窗口一点
    setAttribute(Qt::WA_TranslucentBackground);
    PWindow* pw = new PWindow(this);//子窗口
    pw->show();
}

ShadowWindow::~ShadowWindow()
{
}
void ShadowWindow::paintEvent(QPaintEvent* event) {
    int r = 170, g = 170, b = 170, a = 0;
    int x = 0, y = 0, w = this->width(), h = this->height();
    for (int i = 0; i <= 10; i++) {
        QPainter painter(this);
        painter.setRenderHint(QPainter::Antialiasing, true);
        painter.setPen(QColor(r - i * 15, g - i * 15, b - i * 15, a + pow(i,2.1)));
        //painter.drawRoundedRect(QRect(x + i, y + i, w - (i * 2), h - (i * 2)), 2, 2);
        painter.drawRect(QRect(x + i, y + i, w - (i * 2), h - (i * 2)));
        painter.end();
    }
}

如果子窗口覆盖了这个窗口,可以通过子窗口的拖动函数,调用move函数来移动父窗口,使得父窗口跟随子窗口移动,在子窗口要传入父窗口指针,子窗口类中定义指针接收父指针,这样就能操作父窗口。

QWidget* qw;//类中
qw = parent;//构造函数中
void PWindow::mouseMoveEvent(QMouseEvent* event){
    if (isMousePressed == true)
    {
        QPoint topLeftPoint = event->globalPos() - mousePosition;
        this->move(topLeftPoint);
        qw->move(this->x()-10,this->y()-10);//这里要做一下偏移,因为要流出阴影。
    }
}

相关文章

  • QT绘制阴影

    新建一个阴影类,将这个类作为阴影背景.h .cpp 如果子窗口覆盖了这个窗口,可以通过子窗口的拖动函数,调用mov...

  • 绘图

    Qt--基础图形绘制 QT基础(三)----QPainter画图功能 & 画图小项目

  • OpenGL阴影

    几种绘制阴影的方法 在OpenGL中,比较常见的绘制阴影的方法有:shadow mapping,shadow vo...

  • PRO-010:Qt版本大嘴鱼

    本主题主要利用Qt的GUI与多线程,实现一个几何线条的动画。设计的技术:  Qt的图形绘制  Qt的信号与槽通信 ...

  • 《Qt 学习之路 2》笔记

    《Qt 学习之路 2》原文地址 Qt跨平台策略 GUI 模拟:任何平台都提供了图形绘制函数,例如画点、画线、画面等...

  • 【tips】Clion添加Qt gui绘制快捷方式

    使用Clion+Qt开发GUI程序,有时候会用到Qt带的GUI绘制工具,将工具添加到Clion的External ...

  • CG绘制-阴影

    https://www.cnblogs.com/torrescx/p/5364314.html

  • 绘制内阴影

    本文原本发布在我的个人博客里,由于工作原因长久未更新维护,遂将其重新整理后转移至此。 给视图添加阴影效果可以使用 ...

  • 绘制阴影图

    Photonic Realization of the Quantum Rabi Model(PhysRevLet...

  • 不同角色各种“鼻子”该怎么画?

    这就是Jane Mere通常绘制的鼻子绘制方法。 通过简化实际绘制的鼻子阴影来绘制变形的鼻子。绘制变形的图片时,考...

网友评论

    本文标题:QT绘制阴影

    本文链接:https://www.haomeiwen.com/subject/cxaecltx.html