можно попробовать через ProxyWdiget в QGraphicsView
есть такой класс вьюва
C++ (Qt)
#ifndef __RESIZEGVIEW_H__
#define __RESIZEGVIEW_H__
 
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsProxyWidget>
#include <QTimer>
 
class CResizeGView : public QGraphicsView
{
	Q_OBJECT;
	QWidget * m_pWidget;
	QTimer    m_tmDoResize;
 
public:
	CResizeGView( QGraphicsScene * pScene ) : QGraphicsView( pScene )
	{
		m_pWidget = 0;
		m_tmDoResize.setSingleShot( true );
		m_tmDoResize.setInterval( 500 );
		QObject::connect( &m_tmDoResize, SIGNAL(timeout()), this, SLOT(doResize()) );
	}
	void setWidget( QWidget * pWidget )
	{
		m_pWidget = pWidget;
	}
 
private:
	virtual void resizeEvent ( QResizeEvent * pEvent )
	{
		m_tmDoResize.start();
	}
 
private slots:
	void doResize()
	{
		double fdW = (double)( size().width()-10 ) / (double)(m_pWidget->size().width());
		double fdH = (double)( size().height()-10 ) / (double)(m_pWidget->size().height());
		resetTransform();
		scale( fdW, fdH );
	}
};
 
#endif // __RESIZEGVIEW_H__
 
использовать со своей формой надо так:
C++ (Qt)
	QGraphicsScene * pScene = new QGraphicsScene();
		pScene->addWidget( pWidget );
		CResizeGView * pView = new CResizeGView( pScene );
		pView->setGeometry( pWidget->geometry() );
		pView->setWidget( pWidget );
 
		pView->show();
 
у меня ресайзит и вроде достаточно быстро - этот сопсоб хорош тем что он годен для ресайза абсолютно любого виджета в том числе не предназначенного для ресайза совсем