2013-12-18 62 views
1

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

我已经用QGraphicsScene和QGraphicsView进行了实验,我可以制作矩形和文本缩放;然而,矩形缩放似乎很难看(伸展轮廓),我不希望文本可以缩放。

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

+1

带QLabel的常规'QHBoxLayout'似乎是令人满意的。 –

+0

我一直在考虑不使用QGraphicsScene和QGraphicsView,但我希望这些渲染最终可打印。打印只使用布局/其他小部件的区域是否可行/更容易? –

+0

Qt中的打印小部件[非常简单](http://qt-project.org/faq/answer/how_can_i_print_a_widget)。 –

回答

0

我不知道丑陋的矩形比例是什么(截图可能会帮助我更好地理解你的意思有),但如果你不想文本部分向规模化,你可以完成通过调用setFlag (ItemIgnoresTransformations,true)在你的QTextGraphicItem对象上。

至于自动重新调整矩形响应窗口大小调整,你可能需要看看QGraphicsView::fitInView()方法的文档:

缩放视图矩阵和滚动滚动条,确保了 场景矩形矩形适合在视口内[...]通常从 调用fitInView()从resizeEvent()重新实现到 确保整个场景或场景的各个部分自动缩放 以适合视图的新大小为 调整大小。但请注意,如果新的 转换切换滚动条的自动状态,那么从 resizeEvent()调用fitInView()会导致不必要的调整大小递归。您可以将 切换滚动条策略始终打开或始终关闭,以防止 this(请参阅horizo​​ntalScrollBarPolicy()和verticalScrollBarPolicy())。

+0

设置文本标志的效果很好 - 谢谢! 我提到的“丑陋的缩放”问题是一个黑色的轮廓,它会出现在每个边上并且宽度不均匀。我可以通过使用'rect1-> setPen(QPen(Qt :: NoPen))来解决这个问题;'有没有办法让轮廓缩放,例如总是固定在说2px宽? –

+0

此外,矩形在缩放时看起来像“闪烁”1px左右。有没有什么办法解决这一问题? –

+0

尝试在将QPen对象传递给setPen()之前调用setCosmetic(true)。 –