隐藏QSplitter子对象,但保留控制柄的位置

Hide QSplitter child but keep the position of the handle

本文关键字:控制 位置 保留 QSplitter 对象 隐藏      更新时间:2023-10-16

我有一个QSplitter和两个子窗口小部件。比如p_widget_1和p_widget_2。p_widget_1允许关闭,它有一个关闭按钮,当单击关闭时,我调用p_widget_1->hide()。QSplitter医生说:

当你隐藏()一个孩子时,它的空间将分配给其他孩子。当您再次显示()时,它将被恢复。

但我希望QSplitter的句柄保持其位置,因为我有一个要求p_widget_2应该有固定的大小。

我该如何实现它?我目前的方法是在必要时调用p_splitter->setSize(),但它并不总是适用于所有情况。

我在Windows上,QT是5.4.1,Visual Studio 2013。

我没有尝试特定的QWidget(比如你的QSplitter),但当我想在窗口关闭后恢复其几何图形时,我会这样做:

  • 在隐藏子项之前,使用以下功能(在您的QSpliter上)

    QByteArray QWidget::saveGeometry()const

  • 再次显示子项后,使用调用以下方法刚刚存储的QByteArray

    bool QWidget::restoreGeometry(const QByteArray和geometry)

此处提供文档。

我不确定这是否能解决你的问题。请尝试"saveSate"方法保存QSpliter的状态,然后使用"restoreState"方法进行还原。