我遇到了一个问题,我在小部件上做了属性动画,但是他们的动画位置似乎会在下一个布局过程中被覆盖。小部件似乎在动画开始时就跳到了位置,使它看起来很糟糕。结果我想如果我编写自己的布局代码,我可以更好地控制事物。
在QT中编写自定义布局的最简单方法是什么?我尝试按照文档的“手动布局”部分中的步骤进行操作:http://doc.qt.nokia.com/latest/layout.html#manual-layout但是当我尝试在子窗口小部件上调用setGeometry时,我似乎遇到了崩溃。此外,文档似乎与“手动布局”冲突,说从resizeEvent调用setGeometry,resizeEvent文档说不要这样做。
我想我可以写一个真正的布局类。看起来不像太多的代码。但我想知道最简单/最简单的自定义布局是什么。
答案 0 :(得分:0)
我认为这可能有用。
从完全位于父窗口小部件之外的窗口小部件A开始。 不将该小部件添加到布局中。 A的几何形状可能与父母共享边缘。
创建一个虚拟小部件D,它转发A的sizeHint()但不执行任何其他操作。把它放到布局中。
将小部件A设置为小部件D的几何体。
交换布局中的小部件(删除小部件D,添加小部件A)。
如果小部件A和D属于您自己制作的,那么您应该使用PIMPL习语。如果你的小部件没有子小部件,交换小部件将是微不足道的 - 交换pimpl指针。那些小部件本身不必交换。不要从QWidgetPrivate派生你的PIMPL类,而不是它支持它,但我已经看到代码执行它。不是个好主意。