2011-07-11 15 views
4

私はいくつかの線を描いているQWidgetを持っています。私が描いている画像をより良く見るために、ズーム機能を有効にしたり実装したいと思います。そして、通常のブラウザのようにマウスホイールに接続したいのですが、「Ctrl」キーを押しながらマウスホイールを回すとズームインとズームアウトができます。QWidgetのズーム機能

デフォルト機能はありますか?私はいくつかの例を探してみましたが、運が全くありませんでした。だから私はどうすればいいのですか?

+0

「QScrollArea」を使用することをお勧めします。 'QScrollArea'内でのズームの実装方法については、http://stackoverflow.com/a/32269574/575491をご覧ください。 – bkausbk

答えて

14

paintEventを再実装して、描画する前にscaleをQPainterに適用してみます。

class YourClass:public QWidget 
{ 
... 
    protected: 
    void paintEvent (QPaintEvent * event); 
    void wheelEvent (QWheelEvent * event); 
    private: 
    qreal scale; 
}; 

void YourClass::paintEvent (QPaintEvent * event) 
{ 
    QPainter p; 
    p.scale(scale,scale); 
// paint here 
} 
void YourClass::wheelEvent (QWheelEvent * event) 
{ 
    scale+=(event->delta()/120); //or use any other step for zooming 
} 
+0

「通常の」スクロールではステップごとに+ 120、スクロールの結果はステップごとに-240または+ 360となります。 – Anonymous

関連する問題