QWidget上的缩放功能
问题描述:
我有一个QWidget,我正在绘制一些线条,我想启用/实现缩放功能,以便更好地看到我正在绘制的图片。我想将它连接到鼠标滚轮上,就像在普通浏览器中一样,只需按下'ctrl'键并转动鼠标滚轮即可放大和缩小。QWidget上的缩放功能
是否有默认功能?我试图寻找一些例子,但没有任何运气。那我该怎么做?
答
尝试重新实现您的paintEvent,并在绘制之前将比例应用于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
可以考虑使用'QScrollArea'。请看http://stackoverflow.com/a/32269574/575491如何在QScrollArea中实现缩放。 – bkausbk