在QT中编写自定义布局最简单的方法是什么?

时间:2011-08-23 04:33:36

标签: layout qt4

我遇到了一个问题,我在小部件上做了属性动画,但是他们的动画位置似乎会在下一个布局过程中被覆盖。小部件似乎在动画开始时就跳到了位置,使它看起来很糟糕。结果我想如果我编写自己的布局代码,我可以更好地控制事物。

在QT中编写自定义布局的最简单方法是什么?我尝试按照文档的“手动布局”部分中的步骤进行操作:http://doc.qt.nokia.com/latest/layout.html#manual-layout但是当我尝试在子窗口小部件上调用setGeometry时,我似乎遇到了崩溃。此外,文档似乎与“手动布局”冲突,说从resizeEvent调用setGeometry,resizeEvent文档说不要这样做。

我想我可以写一个真正的布局类。看起来不像太多的代码。但我想知道最简单/最简单的自定义布局是什么。

1 个答案:

答案 0 :(得分:0)

我认为这可能有用。

  1. 从完全位于父窗口小部件之外的窗口小部件A开始。 将该小部件添加到布局中。 A的几何形状可能与父母共享边缘。

  2. 创建一个虚拟小部件D,它转发A的sizeHint()但不执行任何其他操作。把它放到布局中。

  3. 将小部件A设置为小部件D的几何体。

  4. 交换布局中的小部件(删除小部件D,添加小部件A)。

  5. 如果小部件A和D属于您自己制作的,那么您应该使用PIMPL习语。如果你的小部件没有子小部件,交换小部件将是微不足道的 - 交换pimpl指针。那些小部件本身不必交换。不要从QWidgetPrivate派生你的PIMPL类,而不是它支持它,但我已经看到代码执行它。不是个好主意。