QTableView放大/缩小

时间:2014-04-10 20:42:47

标签: qt pyqt qtableview

我正在尝试创建一个可以像Excel一样放大和缩小的QTableView 这里也提出了类似的问题:Zooming function on a QWidget

但是,我在PyQt中继承QTableView而不是C,因此重新实现整个PaintEvent方法有点进化。它的源代码有点复杂:https://qt.gitorious.org/qt/tiittane-qt/source/bdd4a9149789f60974603e1f7621d51378f0a108:src/gui/itemviews/qtableview.cpp#L1282

我正在寻找是否有任何其他可行的选项来拥有可缩放的TableView。我的第一次尝试是通过设置字体大小然后实现每个列和行宽度也必须缩放,这可能会变慢。然后意识到改变字体会改变打印。它似乎不是一个优雅的解决方案。在绘画之前改变画家的规模似乎是更优雅的解决方案,但是必须重新实现并将相当多的代码翻译成python才能这样做。我想知道是否有任何其他钩子来完成这件事。

由于

2 个答案:

答案 0 :(得分:1)

如果您可以使用QTableWidget,则可以创建QGraphicsSceneadd it to that。然后,您可以轻松控制其中的小部件的比例。

如果您希望纵向和横向标题始终可见,我认为您必须关闭表格的滚动条(最终会缩放,可能不是您想要的)并且让滚动条成为面板的一部分包含图形场景(可能是一个QAbstractScrollArea面板,布局中有4个单元格:一个用于场景的单元格,一个用于水平滚动条,一个用于垂直滚动条,一个用于角落可能是空的),并将它们连接到表格的滚动行为。

答案 1 :(得分:0)

没有内置方法可以缩放视图。

将屏幕上的字体大小与保存或打印的字体大小分开的最简单方法是基本上有两种字体。一个要显示在屏幕上,你可以称之为'缩放',而另一个要保存/打印,并称之为'字体大小'。

请注意,此答案会从同一问题中剪切并粘贴: Zooming a view in PyQt?