在QGraphicsGridLayou中调整控件大小

2024-09-30 10:34:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在一个QGraphicsView和qgraphicscene上用自定义的QGraphicsWidgets创建一个网格,但是我不确定最好的方法是什么。我在用PyQt4,但这是一个一般的Qt问题。在

我当前的实现包含以下内容。一个qgraphicscene(带视图)和一个QGraphicsWidget,其中包含我在其中插入自定义小部件的QGraphicsGridLayout。在

我遇到的问题是,每个自定义小部件都有不同的大小,它们重叠在一起,我不确定如何分别更改每个小部件的大小。此外,网格需要是“响应”的,即如果小部件是某个宽度,那么应该有3列,但是如果小部件较小,则应该只显示2列。在

我读过通过实现大小提示可以解决这个问题,但是我还没有找到关于这个主题的任何好的文档。在

所以我的问题是:

  1. 有没有更好的方法来建立窗口小部件的层次结构,我当前的一个似乎过多了(Scene>;Widget>;Layout>;widgets)
  2. 什么是使不同大小的小部件具有相同大小的最佳方法(这样它们在网格中显示的大小都相同,并且不会重叠)?在
  3. 我的主QGraphicsWidget(显示网格的地方)不占用视图的整个宽度,实现这一点的最佳方法是什么?在
  4. 如何让我的QGraphicsGrid“响应”?在

Tags: 方法文档gt视图网格主题宽度部件
1条回答
网友
1楼 · 发布于 2024-09-30 10:34:57
  1. Is there a better way to make the hierarchy of widgets, my current one seems excessive (Scene > Widget > Layout > Widgets)

当我使用QGraphics....类时,我通常会子类QGraphicsView。视图将创建它自己的场景,并有方便的方法来创建所有子项。从api的角度来看,只有视图小部件是真正公开的。在

  1. What's the best way to make different sized widgets the same size (so they would all appear the same size in the grid and not overlap)?

这取决于它们是什么类型的小部件。如果它们是images/pixmap,您可以将它们缩放到一定的大小。如果它们是带有控件的实际小部件,您可能不想缩放它们,而应该使用setGeometry设置它们的实际高度/宽度。否则,所有QGraphicsItem都支持缩放。在

  1. My main QGraphicsWidget (on which the grid is displayed) doesn't take up the whole width of the view, what is the best way to achieve this?

在视图中,您可以获得.viewport()大小,然后将图形小部件的大小设置为视口的大小。您必须重写QGraphicsView上的resizeEvent,以便在视图大小调整时调整{}的大小。在

  1. How would I go about making my QGraphicsGrid "responsive"?

为此,最好不要使用网格,也不要手动计算图形场景中每个项目的位置。这在某种程度上取决于你想如何放置物品。一些小部件应该在其他部件的下面还是旁边?你只想要一个紧凑的网格吗?一个项目可以跨越两条网格线吗?所有的东西都必须放在一个“页面”上,还是允许垂直滚动。在你得到好答案之前,你必须先回答这些问题。但一般来说,您知道视口的大小。如果您有一个图形项列表,您可以迭代它们,并根据已经放置的项设置它们的位置。同样,重写图形视图上的resizeEvent,这样每当视图调整大小时,您都可以重新计算项目位置。在

相关问题 更多 >

    热门问题