最全的QgraphicsEffect设置

在Qt中,QGraphicsEffect有四个子类,分别为QGraphicsBlurEffect, QGraphicsColorizeEffect, QGraphicsDropShadowEffect, and QGraphicsOpacityEffect,用于实现模糊、着色、阴影、透明度功能
下面就是对这四种功能以及效果做测试
1.QGraphicsBlurEffect,将图片或窗口模糊化,呈现失焦效果
代码如下

QFrame* pTestFrame = new QFrame(this);
	pTestFrame->setFixedSize(QSize(200, 200));
	pTestFrame->move(100, 110);
	 // 创建高斯模糊效果
	QGraphicsBlurEffect* blurEffect = new QGraphicsBlurEffect;
	blurEffect->setBlurHints(QGraphicsBlurEffect::QualityHint);
	blurEffect->setBlurRadius(2); // 设置模糊半径

	// 将高斯模糊效果应用于控件的背景
	pTestFrame->setAutoFillBackground(true);
	QPalette palette;
	palette.setBrush(QPalette::Background, QBrush(QColor(255,255,255, 40))); // 设置背景颜色
	pTestFrame->setPalette(palette);
	QGraphicsEffect* oldEffect = pTestFrame->graphicsEffect();
	pTestFrame->setGraphicsEffect(blurEffect);

最全的QgraphicsEffect设置_第1张图片

针对于setBlurHints函数主要用于模糊性能参数的设置
QGraphicsBlurEffect::PerformanceHint  //表明渲染性能是最重要的因素,但潜在的代价是较低的质量。
QGraphicsBlurEffect::QualityHint //表示渲染质量是最重要的因素,但潜在的代价是较低的性能。
QGraphicsBlurEffect::AnimationHint //表示模糊半径将是动画的,暗示实现可以保留源的模糊版本的缓存。如果源要动态更改,则不要使用此提示。

2.QGraphicsColorizeEffect,图片或窗口、控件着色
代码如下
QFrame* pTestFrame = new QFrame(this);
	pTestFrame->setFixedSize(QSize(200, 200));
	pTestFrame->move(100, 110);
	pTestFrame->setAutoFillBackground(true);
auto blur = new QGraphicsColorizeEffect(this);
    blur->setStrength(0.5);//强度0.0等于没有效果,而1.0意味着完全着色。测试发现越接近1,颜色值越深
    blur->setColor(Qt::green);//颜色
    QPalette palette;
	palette.setBrush(QPalette::Background, QBrush(QColor(255, 255, 255, 40))); // 设置背景颜色
	pTestFrame->setPalette(palette);
	auto oldEffect = pTestFrame->graphicsEffect();
  pTestFrame ->setGraphicsEffect(blur);

最全的QgraphicsEffect设置_第2张图片

QGraphicsDropShadowEffect,图片或窗口、控件设置阴影
代码如下
QFrame* pTestFrame = new QFrame(this);
	pTestFrame->setFixedSize(QSize(200, 200));
	pTestFrame->move(100, 110);
	pTestFrame->setAutoFillBackground(true);
QGraphicsDropShadowEffect* shadoweffect = new QGraphicsDropShadowEffect(this);
    shadoweffect->setOffset(5,5);//阴影与原有图形的间距
    shadoweffect->setColor(Qt::green);
    shadoweffect->setBlurRadius(10);//阴影半径
    pTestFrame->setGraphicsEffect(shadoweffect);

最全的QgraphicsEffect设置_第3张图片

4.QGraphicsOpacityEffect,图片或窗口、控件设置透明度
代码如下
//蒙版参数设置start
	QFrame* pTestFrame = new QFrame(this);
	pTestFrame->setFixedSize(QSize(200, 200));
	pTestFrame->move(100, 110);
	pTestFrame->setAutoFillBackground(true);
    auto rect = pTestFrame ->rect();
    QLinearGradient alphaGradient(rect.topLeft(), rect.bottomLeft());
    alphaGradient.setColorAt(0.0, Qt::transparent);
    alphaGradient.setColorAt(0.5, Qt::black);
    alphaGradient.setColorAt(1.0, Qt::transparent);
    //蒙版参数设置end

    auto blur = new QGraphicsOpacityEffect(this);
    blur->setOpacity(0.5);//透明度设置该值应该在0.0到1.0的范围内,其中0.0是完全透明的,1.0是完全不透明的。
    blur->setOpacityMask(alphaGradient);//蒙版设置,透明度和蒙版可单独设置、
    QPalette palette;
	palette.setBrush(QPalette::Background, QBrush(QColor(255, 255, 255, 40))); // 设置背景颜色
	pTestFrame->setPalette(palette);
    pTestFrame ->setGraphicsEffect(blur);

最全的QgraphicsEffect设置_第4张图片

你可能感兴趣的:(数据库)