Qtの情報少なすぎワロタ……
どうやんの?
透過PNGを表示するんですねー
QGraphicsItem, QGraphicsScene, QGraphicsViewをつかいます
ただ透過しただけだと影が付かないので、QGraphicsEffectで手動で影をつけてやります
QGraphicsItemにクリックイベントつけてやったりしたらデスクトップマスコットみたいになるんじゃないかなー、とか
コード書く
#include <QtGui> int main(int argc, char *argv[]) { QApplication a(argc, argv); QGraphicsScene scene; QGraphicsView view( &scene ); QGraphicsPixmapItem pm( QPixmap( "c:\\afx.png" ) ); QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect(); effect->setColor( QColor(0,0,0) ); effect->setOffset( 5, 5 ); effect->setBlurRadius( 20 ); pm.setGraphicsEffect(effect); scene.addItem( &pm ); view.setStyleSheet("background:transparent; border: none;"); view.setAttribute(Qt::WA_TranslucentBackground); view.setWindowFlags( Qt::FramelessWindowHint ); view.resize(500,500); view.show(); return a.exec(); }
QGraphicsDropShadowEffectを適用できるクラスが何なのかわかんなくて苦労したり
複数の画像にエフェクトを適用
QGraphicsEffectを画像の数だけ生成する必要がある
#include <QtGui> int main(int argc, char *argv[]) { QApplication a(argc, argv); QGraphicsScene scene; QGraphicsView view( &scene ); QGraphicsPixmapItem pm1( QPixmap( "c:\\afx.png" ).scaled( 200, 200, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ) ); QGraphicsPixmapItem pm2( QPixmap( "c:\\che.png" ).scaled( 250, 300, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ) ); QGraphicsDropShadowEffect* shadow1 = new QGraphicsDropShadowEffect(); shadow1->setColor( QColor(0,0,0) ); shadow1->setOffset( 5, 5 ); shadow1->setBlurRadius( 15 ); QGraphicsDropShadowEffect* shadow2 = new QGraphicsDropShadowEffect(); shadow2->setColor( QColor(128,0,0) ); shadow2->setOffset( 5, 5 ); shadow2->setBlurRadius( 15 ); pm1.setGraphicsEffect(shadow1); pm2.setGraphicsEffect(shadow2); pm1.setPos(0,50); pm2.setPos(250,0); scene.addItem( &pm1 ); scene.addItem( &pm2 ); view.setStyleSheet("background:transparent; border: none;"); view.setAttribute(Qt::WA_TranslucentBackground); view.setWindowFlags( Qt::FramelessWindowHint ); view.resize(640,320); view.show(); return a.exec(); }
複数のエフェクトを画像に適用ってのはできないみたいね
どうしてもやるときはQGraphicsViewごとrenderしてもっかい貼り直し、ってする必要がある
複数の画像に複数のエフェクトってなるとQGraphicsViewも複数必要になるのかな?