मैं QLabel
में फीका और फीका करने की कोशिश कर रहा हूं या उस मामले के लिए QWidget
सबक्लास। मैंने QGraphicsEffect
के साथ प्रयास किया है, लेकिन दुर्भाग्य से यह केवल विंडोज़ पर काम करता है, मैक पर नहीं।क्यूटी विजेट्स को कैसे फीका या फीका करना है?
केवल अन्य समाधान है जो दोनों मैक & विंडोज पर काम कर सकते हैं अपने खुद के कस्टम paintEvent
जहाँ मैं QPainter
की अस्पष्टता सेट करते हैं और मेरी व्युत्पन्न QLabel
में "अस्पष्टता" के लिए एक Q_PROPERTY
को परिभाषित करने और QPropertyAnimation
के माध्यम से अपारदर्शिता बदलने होने जा रहा है ।
मैं आपके संदर्भ के लिए प्रासंगिक कोड स्निपेट के नीचे पेस्ट कर रहा हूं। मुझे अभी भी एक समस्या दिखाई दे रही है - QLabel::paintEvent
का उपयोग करना प्रतीत नहीं होता है, यह केवल तभी काम करता है जब मैं QPainter
का उपयोग कर एक पूर्ण कस्टम पेंटिंग करता हूं, लेकिन यह एक आसान तरीका प्रतीत नहीं होता है और यदि मुझे ऐसा करने की ज़रूरत है प्रत्येक QWidget
सबक्लास के लिए मैं फीका करना चाहता हूं, यह एक दुःस्वप्न है। अगर मैं यहां कोई स्पष्ट गलती कर रहा हूं तो कृपया स्पष्ट करें।
Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity)
void MyLabel::setOpacity(qreal value) {
m_Opacity = value;
repaint();
}
void MyLabel::paintEvent((QPaintEvent *pe) {
QPainter p;
p.begin(this);
p.setOpacity();
QLabel::paintEvent(pe);
p.end();
}
void MyLabel::startFadeOutAnimation() {
QPropertyAnimation *anim = new QPropertyAnimation(this, "opacity");
anim->setDuration(800);
anim->setStartValue(1.0);
anim->setEndValue(0.0);
anim->setEasingCurve(QEasingCurve::OutQuad);
anim->start(QAbstractAnimation::DeleteWhenStopped);
}
क्यूटी एपीआई आप एक तरह से यह प्रयोग कर रहे हैं आप कह रहा है बाहर यह इस्तेमाल किया जा नहीं था । विजेट्स वास्तव में महान कलाकार नहीं होते हैं जब आप उनकी सामग्री को एनिमेट करना चाहते हैं। यह सबूत-अवधारणा के लिए काम कर सकता है, लेकिन लंबे समय तक आपको क्यूटी क्विक का उपयोग करना चाहिए। चाहे आप क्यूटी क्विक 1 या क्यूटी क्विक 2 का उपयोग कर रहे हों, यहां तक कि क्यूटी क्विक 1 (घोषणात्मक मॉड्यूल) भी आपके द्वारा किए जा रहे कार्यों में सुधार होगा। –