QTableView 放大/缩小
Posted
技术标签:
【中文标题】QTableView 放大/缩小【英文标题】:QTableView Zoom In/Out 【发布时间】:2014-04-10 20:42:47 【问题描述】:我正在尝试创建一个可以像在 Excel 中一样放大和缩小的 QTableView。 在这里提出了类似的问题:Zooming function on a QWidget
但是,我在 PyQt 而不是 C 中继承 QTableView,因此重新实现整个 PaintEvent 方法有点进化。源代码有点复杂:https://qt.gitorious.org/qt/tiittane-qt/source/bdd4a9149789f60974603e1f7621d51378f0a108:src/gui/itemviews/qtableview.cpp#L1282
我正在寻找是否有任何其他可行的选项来拥有可缩放的 TableView。我的第一次尝试是设置字体大小,然后意识到每列和行的宽度也必须缩放,这可能会变慢。然后意识到改变字体会改变打印。这似乎不是一个优雅的解决方案。在绘画之前更改画家的比例似乎是更优雅的解决方案,但必须重新实现并将相当多的代码转换为 python 才能这样做。我想知道是否还有其他钩子可以完成这项工作。
谢谢
【问题讨论】:
你最后有没有成功?你能分享你确定的技术吗?谢谢! 最后,任务的优先级显着降低,不再处理它。在某个时候,我会重新审视这个,但不知道什么时候。使用图形场景有一些复杂性和奇怪的行为,所以我不确定它是否会比最终重新实现绘制方法更容易 我几天前问过这个问题,我猜我的搜索技能很糟糕...***.com/questions/30601123/zooming-a-view-in-pyqt。我想我最终可能只是从字面上改变字体大小,然后根据内容调整大小,这很糟糕,但是哦…… 【参考方案1】:如果您可以改用QTableWidget
,那么您可以创建QGraphicsScene
和add it to that。然后,您可以轻松控制其中的小部件的比例。
如果您希望垂直和水平标题始终可见,我认为您将不得不关闭表格的滚动条(最终会缩放,可能不是您想要的)并让滚动条成为包含图形场景的面板的一部分(可能面板是QAbstractScrollArea
,布局中有4个单元格:一个单元格用于场景,一个用于水平滚动条,一个用于垂直滚动条,一个用于角落可能为空),并将它们连接到表格的滚动行为。
【讨论】:
这听起来是个好主意。我在实现它时遇到了麻烦,因为滚动条似乎是一个问题,通过 Graphics View 保持水平和垂直标题可见滚动。【参考方案2】:没有放大视图的内置方法。
将屏幕上的字体大小与保存或打印的字体大小分开的最简单方法基本上是使用两种字体。一个要显示在屏幕上,您可以称为“缩放”,而另一个要保存/打印并称为“字体大小”。
请注意,此答案是从同一个问题中剪切和粘贴的: Zooming a view in PyQt?
【讨论】:
以上是关于QTableView 放大/缩小的主要内容,如果未能解决你的问题,请参考以下文章