Qt中的缩放图形

Scaling graphics in Qt

本文关键字:图形 缩放 Qt      更新时间:2023-10-16

我正在使用Qt/C++编写一个计划类型的应用程序,希望在窗口的一部分显示每周计划,并随着窗口大小的增加而具有此渲染比例。渲染将由包含文本的矩形组成,随着显示区域的增加,矩形应能很好地缩放,而文本应保持不变。

我已经尝试过QGraphicsScene和QGraphicsView,我可以制作矩形和文本比例;然而,矩形缩放看起来很难看(拉伸了轮廓),我根本不希望文本缩放。

我怀疑我可能想将场景调整为显示区域,并重新绘制矩形和文本;然而,我不知道该怎么做——QGraphicsScene似乎没有响应resizeEvent。这是正确的方法吗?

我不确定丑陋的矩形缩放是怎么回事(屏幕截图可能会帮助我更好地理解你的意思),但如果你不想让文本部分缩放,你可以通过在QTextGraphicItem对象上调用setFlag(ItemIgnoresTransformations,true)来实现这一点。

至于响应窗口大小调整而自动重新缩放矩形,您可以查看QGraphicsView::fitInView()方法的文档:

缩放视图矩阵并滚动滚动条,以确保场景矩形矩形矩形适合视口内部[…]从resizeEvent()的重新实现内部调用fitInView(),以确保整个场景或部分场景缩放自动适应视图的新大小调整大小。不过请注意,从内部调用fitInView()resizeEvent()可能会导致不需要的大小调整递归,如果转换切换滚动条的自动状态。你可以将滚动条策略切换为始终打开或始终关闭以防止此(请参阅horizontalScrollBarPolicy()和verticalScrollBarPolicy.())。