C++ Qt中的缩放图形

C++ Qt中的缩放图形,c++,qt,user-interface,graphics,C++,Qt,User Interface,Graphics,我正在使用Qt/C++编写一个调度类型的应用程序,希望在窗口的一个部分显示每周的调度,并随着窗口大小的增加而具有这种渲染比例。渲染将由包含文本的矩形组成,随着显示区域的增加,矩形应能很好地缩放,而文本应保持不变 我已经尝试过QGraphicscene和QGraphicsView,我可以制作矩形和文本比例;但是,矩形缩放看起来很难看(拉伸轮廓),我根本不想让文本缩放 我怀疑我可能想将场景调整到显示区域,并重新绘制矩形和文本;然而,我不知道如何做到这一点-QGraphicscene似乎没有响应res

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

我已经尝试过QGraphicscene和QGraphicsView,我可以制作矩形和文本比例;但是,矩形缩放看起来很难看(拉伸轮廓),我根本不想让文本缩放


我怀疑我可能想将场景调整到显示区域,并重新绘制矩形和文本;然而,我不知道如何做到这一点-QGraphicscene似乎没有响应resizeEvent。这是正确的方法吗?

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

对于根据窗口大小自动调整矩形的大小,您可以查看该方法的文档:

缩放视图矩阵并滚动滚动条,以确保 场景矩形矩形适合视口[…]这是常见的 从resizeEvent()的重新实现内部调用fitInView(),以 确保整个场景或场景的部分缩放 自动适应视图显示时视口的新大小 调整大小。但是请注意,从内部调用fitInView() 如果新的 转换切换滚动条的自动状态。你可以 将滚动条策略切换为始终打开或始终关闭以防止 这(请参见horizontalScrollBarPolicy()和verticalScrollBarPolicy()


带有
QLabel
s的常规
QHBoxLayout
似乎令人满意。我本来打算根本不使用qgraphicscene和QGraphicsView,但我希望这些渲染最终可以打印。打印仅使用布局/其他小部件的区域是否可能/更容易?打印小部件在Qt中。设置文本的标志非常有效-谢谢!我所指的“丑陋的缩放”问题是一个黑色的轮廓,它会出现在每个边上,并且宽度不均匀;我可以通过使用
rect1->setPen(QPen(Qt::NoPen)),解决这个问题是否有办法不让轮廓缩放,例如,始终将其固定在2px宽?此外,矩形在缩放时似乎会左右“闪烁”1px。有什么方法可以解决这个问题吗?在将QPen对象传递给setPen()之前,请尝试在QPen对象上调用set化妆品(true)。谢谢您的帮助!最后一个问题-我将文本设置为忽略变换,但我需要获得未转换文本的长度和宽度,以便将其正确放置在场景中。但是,
text->boundingRect()
显示为如果文本被转换,则返回文本的矩形,而不是屏幕上文本的尺寸。是否有任何方法可以获得场景高度和宽度方面的实际显示尺寸?我不知道有哪种优雅的方法可以做到这一点,但如果你对一种丑陋的方法没意见的话,那么就拿转换后的矩形并取消转换它如何:QRect untransformedRect=myGraphicsView->matrix().inversed().mapRect(transformedRect);