[Qt-interest] Sleep
Parameshwari
paramr at tataelxsi.co.in
Wed Apr 8 10:54:06 CEST 2009
Thanks Tim,But where can i get "#include <boost/function.hpp>" ,
"boost" location. Is that to be added a separate module? I am getting
"error" in that.
Regards
-----Original Message-----
From: Tim W [mailto:timpie.w at gmail.com]
Sent: Tuesday, April 07, 2009 7:59 PM
To: paramr at tataelxsi.co.in
Cc: qt-interest at trolltech.com
Subject: Re: [Qt-interest] Sleep
On Tue, Apr 7, 2009 at 8:46 AM, Parameshwari <paramr at tataelxsi.co.in>
wrote:
but i wanted to add a sleep before resize option, So that i will get the
slider effect.some one could help in this.
Try not to suspend the gui thread.
I think you need something like this ...
//header
#include <QObject>
#include <QSize>
#include <boost/function.hpp>
class QTimeLine;
class ResizeAnimation : public QObject
{
Q_OBJECT
public:
typedef boost::function< void (int, int) > Resize;
explicit ResizeAnimation( QObject* const aParent );
void setResizeObject( const Resize& aResizableObject, const QSize&
aEndSize );
public slots:
void start();
private slots:
void nextFrame(int aFrame );
private:
QTimeLine *const m_timeLine;
QSize m_size;
Resize m_resizable;
};
//cpp
#include "resizeanimation.h"
#include <QTimeLine>
ResizeAnimation::ResizeAnimation( QObject* const aParent )
: QObject(aParent),
m_timeLine( new QTimeLine( 2000, this ) ),
m_size(),
m_resizable()
{
connect( m_timeLine, SIGNAL( frameChanged( int ) ),
SLOT(nextFrame(int)) );
m_timeLine->setLoopCount( 5 );
}
void ResizeAnimation::setResizeObject( const Resize& aResizableObject,
const QSize& aEndSize )
{
m_resizable =aResizableObject;
m_size = aEndSize;
m_timeLine->setFrameRange(0, qMax( aEndSize.width(),
aEndSize.height() ) );
}
void ResizeAnimation::start()
{
m_timeLine->start();
}
void ResizeAnimation::nextFrame(int aFrame )
{
if(!m_resizable)
{
m_resizable(qMin( aFrame, m_size.width() ), qMin( aFrame,
m_size.height() ));
}
}
//user code
#include <QtGui/QApplication>
#include <QtGui/QWidget>
#include <boost/lambda/bind.hpp>
#include <boost/ref.hpp>
using namespace boost::lambda;
using namespace boost;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget widgetToResize;
widgetToResize.resize( 0, 0 );
widgetToResize.show();
ResizeAnimation animation(0);
void (QWidget::*resize)( int, int ) = &QWidget::resize;
animation.setResizeObject( bind(resize, &widgetToResize, _1, _2),
QSize( 500,500 ));
animation.start();
return a.exec();
}
Cheers,
Tim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20090408/7222abdd/attachment.html
More information about the Qt-interest-old
mailing list