日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 芯聞號 > 充電吧
[導讀]1.默認陰影QGraphicsDropShadowEffect?*defaultShadow?=?new?QGraphicsDropShadowEffect(); defaultShadow->

1.默認陰影

QGraphicsDropShadowEffect?*defaultShadow?=?new?QGraphicsDropShadowEffect();
defaultShadow->setBlurRadius(9.0);
defaultShadow->setColor(QColor(0,?0,?0,?160));
defaultShadow->setOffset(4.0);
ui->pushButtonDefault->setGraphicsEffect(defaultShadow);

2.自定義陰影

customshadoweffect.h

#ifndef?CUSTOMSHADOWEFFECT_H
#define?CUSTOMSHADOWEFFECT_H

#include#includeclass?CustomShadowEffect?:?public?QGraphicsEffect
{
????Q_OBJECT
public:
????explicit?CustomShadowEffect(QObject?*parent?=?0);

????void?draw(QPainter*?painter);
????QRectF?boundingRectFor(const?QRectF&?rect)?const;

????inline?void?setDistance(qreal?distance)?{?_distance?=?distance;?updateBoundingRect();?}
????inline?qreal?distance()?const?{?return?_distance;?}

????inline?void?setBlurRadius(qreal?blurRadius)?{?_blurRadius?=?blurRadius;?updateBoundingRect();?}
????inline?qreal?blurRadius()?const?{?return?_blurRadius;?}

????inline?void?setColor(const?QColor&?color)?{?_color?=?color;?}
????inline?QColor?color()?const?{?return?_color;?}

private:
????qreal??_distance;
????qreal??_blurRadius;
????QColor?_color;
};

#endif?//?CUSTOMSHADOWEFFECT_H

customshadoweffect.cpp

#include?"customshadoweffect.h"
#include//?#includeCustomShadowEffect::CustomShadowEffect(QObject?*parent)?:
????QGraphicsEffect(parent),
????_distance(4.0f),
????_blurRadius(10.0f),
????_color(0,?0,?0,?80)
{
}

QT_BEGIN_NAMESPACE
??extern?Q_WIDGETS_EXPORT?void?qt_blurImage(QPainter?*p,?QImage?&blurImage,?qreal?radius,?bool?quality,?bool?alphaOnly,?int?transposed?=?0?);
QT_END_NAMESPACE

void?CustomShadowEffect::draw(QPainter*?painter)
{
????//?if?nothing?to?show?outside?the?item,?just?draw?source
????if?((blurRadius()?+?distance())?worldTransform();
????painter->setWorldTransform(QTransform());

????//?Calculate?size?for?the?background?image
????QSize?szi(px.size().width()?+?2?*?distance(),?px.size().height()?+?2?*?distance());

????QImage?tmp(szi,?QImage::Format_ARGB32_Premultiplied);
????QPixmap?scaled?=?px.scaled(szi);
????tmp.fill(0);
????QPainter?tmpPainter(&tmp);
????tmpPainter.setCompositionMode(QPainter::CompositionMode_Source);
????tmpPainter.drawPixmap(QPointF(-distance(),?-distance()),?scaled);
????tmpPainter.end();

????//?blur?the?alpha?channel
????QImage?blurred(tmp.size(),?QImage::Format_ARGB32_Premultiplied);
????blurred.fill(0);
????QPainter?blurPainter(&blurred);
????qt_blurImage(&blurPainter,?tmp,?blurRadius(),?false,?true);
????blurPainter.end();

????tmp?=?blurred;

????//?blacken?the?image...
????tmpPainter.begin(&tmp);
????tmpPainter.setCompositionMode(QPainter::CompositionMode_SourceIn);
????tmpPainter.fillRect(tmp.rect(),?color());
????tmpPainter.end();

????//?draw?the?blurred?shadow...
????painter->drawImage(offset,?tmp);

????//?draw?the?actual?pixmap...
????painter->drawPixmap(offset,?px,?QRectF());

????//?restore?world?transform
????painter->setWorldTransform(restoreTransform);
}

QRectF?CustomShadowEffect::boundingRectFor(const?QRectF&?rect)?const
{
????qreal?delta?=?blurRadius()?+?distance();
????return?rect.united(rect.adjusted(-delta,?-delta,?delta,?delta));
}

用于Graphics Item

//?...
CustomShadowEffect?*bodyShadow?=?new?CustomShadowEffect();
bodyShadow->setBlurRadius(20.0);
bodyShadow->setDistance(6.0);
bodyShadow->setColor(QColor(0,?0,?0,?80));
item->setGraphicsEffect(bodyShadow);
//?...

用于控件

//...
CustomShadowEffect?*bodyShadow?=?new?CustomShadowEffect();
bodyShadow->setBlurRadius(20.0);
bodyShadow->setDistance(6.0);
bodyShadow->setColor(QColor(0,?0,?0,?80));
ui->widget->setGraphicsEffect(bodyShadow);
//?...

3.下圖是默認和自定義兩種情況下作用于按鈕的效果






本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

在嵌入式系統(tǒng)開發(fā)領域,Qt憑借其跨平臺特性、豐富的GUI組件和高效的開發(fā)框架,成為構建交互式界面的首選工具之一。對于嵌入式工程師而言,掌握Qt不僅能提升開發(fā)效率,更能為智能設備、工業(yè)控制、汽車電子等領域的產(chǎn)品帶來更優(yōu)質的...

關鍵字: 嵌入式 QT

在嵌入式系統(tǒng)開發(fā)領域,Qt憑借其跨平臺特性和豐富的功能庫,已成為構建高性能圖形用戶界面(GUI)的首選工具之一。對于嵌入式工程師而言,掌握Qt的多種開發(fā)方式不僅能提升開發(fā)效率,還能增強對復雜嵌入式系統(tǒng)的控制能力。

關鍵字: 嵌入式系統(tǒng) QT

在嵌入式Linux圖形界面開發(fā)中,Qt框架憑借其跨平臺特性與豐富的組件庫成為首選方案。其核心的信號槽機制為對象間通信提供了高效解耦方案,但在資源受限的嵌入式場景中,不當使用可能導致性能瓶頸。本文從機制原理出發(fā),結合典型場...

關鍵字: QT 嵌入式Linux 信號槽

隨著數(shù)字孿生技術的發(fā)展 , 三維模型的顯示與控制技術應用需求 日益迫切 , 當前在嵌入式環(huán)境下實現(xiàn)復雜模型的三維顯示與控制仍存在渲染效率低 、交互控制復雜 、控制延遲高 、可移植性差等問題 。針對上述問題 ,提出了一種基...

關鍵字: 0SG QT 三維可視化 模型交互控制 RK3588平臺

Qt是一款由Qt公司(前身為Trolltech)開發(fā)的跨平臺應用程序框架。它提供了豐富的功能,包括圖形用戶界面、數(shù)據(jù)庫操作、網(wǎng)絡通信等,使得開發(fā)者能夠更加便捷地創(chuàng)建高質量、可移植性強的應用程序。Qt采用C++編寫,同時也...

關鍵字: QT RTOS

摘 要 :為解決制鞋行業(yè)中噴膠精度不高、靈活性差、生產(chǎn)效率低的問題,設計一種基于機器視覺的鞋模噴膠系統(tǒng)。該系統(tǒng)硬件由工業(yè)攝像頭、工控機及路由器構成,軟件則采用圖像識別庫 OpenCV 與圖形界面應用程序開發(fā)框架 Qt 編...

關鍵字: 機器視覺 圖像處理 鞋模 噴膠 OpenCV QT

嵌入式系統(tǒng)是指以應用為中心、以計算機技術為基礎,軟件硬件可裁剪、適應應用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。

關鍵字: QT 嵌入式 C++

摘 要:倉儲作為物流與供應鏈的核心環(huán)節(jié),對食品安全的控制起著至關重要的作用。溫濕度是影響糧食倉儲過程安全與品質的重要因素。文中使用無線傳感網(wǎng)絡進行數(shù)據(jù)采集,通過Qt平臺設計軟件系統(tǒng),并借助數(shù)據(jù)庫進行數(shù)據(jù)存儲與分析處理,實...

關鍵字: 成品糧 倉儲 溫濕度監(jiān)測 無線傳感網(wǎng)絡 QT

在此部件上繪制行號,并將其放置在CodeEditor的viewport()的左邊距區(qū)域上,QWidget類也可以幫助我們對其內容進行滾動。

關鍵字: QT 代碼編輯器

不管是Qt新手還是開發(fā)過qt的群體來說,對Qt Designer、Qt Quick Designer、Qt Creator這幾個應用程序肯定是熟悉的。

關鍵字: QT IDE C
關閉