2010-02-02 13 views
6

मैं एक शो/छिपाने विजेट एनीमेशन लागू करने के लिए कोशिश कर रहा हूँ। विजेट एक QDockWidget है और इसलिए QMainWindowLayout के अंदर है।क्यूटी दिखाएँ/छुपाएँ विजेट एनीमेशन

m_listViewDock->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); 
QPropertyAnimation* animation = new QPropertyAnimation(m_listViewDock, "geometry", m_listViewDock); 

animation->setDuration(1000); 

QRect g = m_listViewDock->geometry(); 
animation->setStartState(g); 
g.setHeight(80); 
animation->setEndState(g); 
animation->start(QAbstractAnimation::DeleteWhenStopped); 

दुर्भाग्य से यह कुछ भी नहीं करता है:

QPropertyAnimation का उपयोग करते हुए काम करने के लिए लग रहे हैं doens't, मैं कुछ है कि की तरह लग रही हो गया। मैं अन्य प्रॉपर्टी (minimumHeight, fixedHeight), लेकिन एक ही मुद्दे के साथ की कोशिश की।

मैंने सोचा कि मैंने डिजाइनर का उपयोग करके अपना विजेट लेआउट सही तरीके से सेट नहीं किया है, लेकिन अगर मैं न्यूनतम आकार के साथ खेलता हूं तो भी मुझे कोई परिणाम नहीं मिलता है। आकार नीति किस तरह इस्तेमाल करना चाहिए अगर मैं आकार के साथ खेलना चाहते हैं?

मैं अटक कर रहा हूँ, यह बहुत अच्छा नहीं अगर किसी ने मेरी समस्या का स्पष्ट कर सकते हैं। मुझे यकीन है कि मैंने कुछ गलत कर रहा हूँ नहीं कर रहा हूँ ...

आपकी मदद की, बोरिस के लिए अग्रिम धन्यवाद -

उत्तर

2

वैसे, यहाँ मुख्य रूप से के लिए इस्तेमाल किया है कैसे क्यूटी प्रोग्रामर QWidgetAnimator में इसका इस्तेमाल किया, डॉक विजेट्स के एनिमेशन, मैं बिल्कुल वही कर रहा हूं ...:

const QRect final_geometry = _final_geometry.isValid() || widget->isWindow() ? _final_geometry : 
     QRect(QPoint(-500 - widget->width(), -500 - widget->height()), widget->size()); 

#ifndef QT_NO_ANIMATION 
    AnimationMap::const_iterator it = m_animation_map.constFind(widget); 
    if (it != m_animation_map.constEnd() && (*it)->endValue().toRect() == final_geometry) 
     return; 

    QPropertyAnimation *anim = new QPropertyAnimation(widget, "geometry", widget); 
    anim->setDuration(animate ? 200 : 0); 
    anim->setEasingCurve(QEasingCurve::InOutQuad); 
    anim->setEndValue(final_geometry); 
    m_animation_map[widget] = anim; 
    connect(anim, SIGNAL(finished()), SLOT(animationFinished())); 
    anim->start(QPropertyAnimation::DeleteWhenStopped); 
संबंधित मुद्दे