【问题标题】:How to resize splitter widgets programmatically in Qt?如何在 Qt 中以编程方式调整拆分器小部件的大小?
【发布时间】:2015-08-12 15:24:13
【问题描述】:

我使用 QSplitter 并排放置一些小部件。

作为用户,我只需拖动拆分器即可调整这些小部件的大小。

作为一名程序员,我现在不知道如何准确指定我想要的宽度和高度。

这是我的原始状态(通过不同的拉伸调整)。

我尝试使用 setFixedSize(),但在调用之后,用户无法再自行调整小部件的大小(这绝对是正确的行为,因为大小已“固定”)。

如果我使用resize(),它几乎没有效果。小部件已调整大小,但是(!)不正确,并且(!)当我再次开始拖动时,小部件会获得其初始状态。

有没有办法在代码中正确调整左侧小部件的大小?如您所见,我不想固定大小,但 resize() 无法正常工作。那我该怎么办?

【问题讨论】:

    标签: c++ qt resize qsplitter


    【解决方案1】:

    QSplitter 有它的方法QSplitter::setSizes(QList<int>),其中列表中的每个条目都是小部件的大小,以像素为单位,分别从左到右或从上到下。该方法不需要您知道确切的宽度,它仍然适用于猜测的尺寸。

    我使用此功能在程序关闭时将用户定义的尺寸(由QSplitter::sizes() 获得)存储在QSettings 实例中,并在软件再次启动时重新应用它们。如果由于某种原因没有设置它们,我只需设置整体宽度除以拆分器中的小部件数量,它作为初始状态工作得很好。

    【讨论】:

    • 非常感谢。这正是我所需要的。我浪费了大约 2 天的时间自己寻找路,但你帮了我很多。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 2011-02-12
    相关资源
    最近更新 更多