2010-07-14 16 views
20

मैंने इस तरह के विजेट में एक तस्वीर दिखाने के लिए QGraphicsView, QGraphicsScene कक्षाओं का उपयोग किया है:क्यूटी में जीआईएफ एनीमेशन

m_Scene->addPixmap(QPixmap(fileName)); 
m_View->setScene(m_Scene); 

मैं एक ही दृश्य में .gif एनीमेशन कैसे दिखा सकता हूं?

उत्तर

61

मैं QGraphicsView या QGraphicsScene साथ GIF एनीमेशन का प्रयोग नहीं करते, मैं इसे केवल QDialog में उपयोग करते हैं, लेकिन मुझे लगता है यह एक ही सामान है, तो यहाँ मेरी कोड है संपर्क।


पीएस: क्यूटी एसडीके से उदाहरण भी देखें। वे वास्तव में मदद कर सकते हैं!

+7

कोई कहे तो कितना है 5x5 आप कहते हैं: "मत पूछो कितना 5x5 है, तो आप बेहतर पूछना 2x2 कितना है" ? और आप जवाब देते हैं: "2x2 = 4"? – Narek

+10

नहीं, मैं कहता हूं कि 2x2 = 4 5x5 से 25 प्राप्त करने में मदद करेगा ... – mosg

+0

हाँ, यहां एक ही कहानी है! आप मुझे 2x2 = 4 जानने के द्वारा 5x5 की गणना करने का सुझाव देते हैं :))। मैं आपकी मदद के लिए धन्यवाद कहना चाहता हूं लेकिन जो भी आप कहते हैं, मुझे पता था, मैं काम पूरा करना चाहता था जैसा मैंने पूछा था। क्या आप QGraphicsView और QGraphicsScene कक्षाओं का उपयोग कर ऐसा करने में मेरी मदद कर सकते हैं? या यदि आप कहते हैं कि यह इन कक्षाओं के साथ असंभव है तो यह भी एक जवाब होगा! – Narek

4

http://doc.qt.io/qt-5/qmovie.html

गूगल और क्यूटी डॉक्स अपने दोस्त हैं। example भी है।

पीएस: जब तक कि आप चीन में न हों, तो Google अप्राप्य है, लेकिन आपके पास बिंग और doc.qt.io.com जैसी चीज़ें होंगी।

पीएस 2: एक छोटे से अधिक गहराई से जवाब के लिए: यदि आप एक QLabel जो QLabel::setMovie के माध्यम से एक QMovie के QGraphicsProxyWidget उपयोग कर सकते हैं। ऐसा करने के लिए शायद एक आसान/छोटा तरीका है।

QMovie *movie = new QMovie(":/images/other/images/16x16/loading.gif"); 
QLabel *processLabel = new QLabel(this); 
processLabel->setMovie(movie); 
movie->start(); 

मेरे loading.gif मैं this से ले लिया:

15

मैंने इसे यहां एक अन्य समस्या के मामले में चलाने के मामले में यहां रखा है।

समस्या

GIF लोड नहीं होता है और isValid() रिटर्न false

कोड

// Load animated GIF 
QMovie* movie = new QMovie("foo.gif"); 

// Make sure the GIF was loaded correctly 
if (!movie->isValid()) 
{ 
    // Something went wrong :(
} 

// Play GIF 
QLabel* label = new QLabel(this); 
label->setMovie(movie); 
movie->start(); 

समाधान

इस हल करने के लिए, मैं अपने exe के बगल में imageformats नाम का एक फ़ोल्डर में क्यूटी के GIF-प्लगइन qgif4.dll डाल करने के लिए किए गए GIF उपयोग करने में सक्षम होना ही था।

डीएल /plugins/imageformats/qgif4.dll के तहत पाया जा सकता है।

+1

'isValid()' इसके लिए डीबगिंग, धन्यवाद, +1 के लिए वास्तव में सहायक है। – TranslucentCloud

0

की तरह संसाधन देखो की उचित पथ दें कोड नीचे के रूप में

QMovie *movie=new QMovie(":/images/foo.gif"); 
if (!movie->isValid()) 
    { 
    // Something went wrong :(
    } 

// Play GIF 
label=new QLabel(this); 
label->setGeometry(115,60,128,128); 
label->setMovie(movie); 
movie->start(); 
संबंधित मुद्दे