【问题标题】:Qt taking a widget out of a layout, but maintaining current positionQt 将小部件从布局中取出,但保持当前位置
【发布时间】:2015-08-20 19:32:28
【问题描述】:

我有一个 QVBoxLayout,我在其中堆叠了 QHBoxLayout 对象,每个对象中有 1-2 个小部件。其中一个包含一个长标签和旁边的一个按钮。但是,当标签调整高度并垂直拉伸布局时,按钮会向下移动以与标签的垂直中间对齐。布局拉伸时如何防止按钮移动?我可以将其从布局中取出,但将其保留在相同的坐标上吗?

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    你应该把按钮放到另一个垂直布局中,并添加一个分隔符:

    -----------------------------------
    |                        | BUTTON |
    |                        |---------
    |   whatever you need    |vertical|
    |      to have here      |   |    |
    |                        | spacer |
    -----------------------------------
    

    【讨论】:

    • 这可能是一个简单的网格,然后您保存在一个垂直布局上。
    【解决方案2】:

    您可以为按钮设置对齐方式以防止其移动:

    layout->setAlignment(btn, Qt::AlignHCenter | Qt::AlignTop)

    从布局中获取按钮是个坏主意。您可能会遇到内存泄漏。手动小部件定位也可能非常复杂。

    【讨论】:

    • "从布局中获取按钮是个坏主意。您可能会遇到内存泄漏。"这本身并不是一个坏主意,并且不需要发生内存泄漏。您需要通过一些示例来限定此建议以使其有用,因为它目前是无用的 FUD。在这种情况下根本没有必要:问题是“我可以让它正常运行,否则我可以通过将按钮从布局中取出来使其工作”。您几乎可以从答案中删除最后一段,因为它不适用:您提供了更好的解决方案!
    • 如果删除我们的意思是将按钮父小部件设置为 0 - 那么当这个小部件将被删除时 Qt 不会删除这个按钮。这是内存泄漏。
    猜你喜欢
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 2014-08-07
    • 2015-03-06
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    相关资源
    最近更新 更多