私はいくつかの線を描いているQWidgetを持っています。私が描いている画像をより良く見るために、ズーム機能を有効にしたり実装したいと思います。そして、通常のブラウザのようにマウスホイールに接続したいのですが、「Ctrl」キーを押しながらマウスホイールを回すとズームインとズームアウトができます。QWidgetのズーム機能
デフォルト機能はありますか?私はいくつかの例を探してみましたが、運が全くありませんでした。だから私はどうすればいいのですか?
私はいくつかの線を描いているQWidgetを持っています。私が描いている画像をより良く見るために、ズーム機能を有効にしたり実装したいと思います。そして、通常のブラウザのようにマウスホイールに接続したいのですが、「Ctrl」キーを押しながらマウスホイールを回すとズームインとズームアウトができます。QWidgetのズーム機能
デフォルト機能はありますか?私はいくつかの例を探してみましたが、運が全くありませんでした。だから私はどうすればいいのですか?
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
}
「通常の」スクロールではステップごとに+ 120、スクロールの結果はステップごとに-240または+ 360となります。 – Anonymous
「QScrollArea」を使用することをお勧めします。 'QScrollArea'内でのズームの実装方法については、http://stackoverflow.com/a/32269574/575491をご覧ください。 – bkausbk