在QLabel内容更新后适合最小大小的QDockPanel



我有一个QDockWidget,它以QGroupBox作为顶部小部件,并应用了QVBoxLayout。它包含一个QChartView和一个QLabel。

QLabel包含一个由不同长度的几行组成的文本。

首先,我希望QChartView的宽度和高度与QLabel相同。

其次,当QLabel的内容由Slot方法中的setText(…(更新时,其内容的高度和宽度都会发生变化。所以我想更新上面的QChartView的宽度和高度。

目前,我只实现了扩展整个DockPanel以容纳更长、更宽的QLabel内容,但当内容更窄、更宽时,我不会退缩。。。

我确实玩了很多东西,但没有真正成功(这里是更新QLabel内容的Slot方法的片段…(:

self.fkChartView.hide()
self.pPDetailsLabel.hide()
self.pPDetailsLabel.parent().hide()
self.pPDetailsLabel.setText(self.canvas.grayScottModel.getPearsonPatternDescription(specie=type))
self.pPDetailsLabel.updateGeometry()
self.pPDetailsLabel.parent().updateGeometry()
self.pPDetailsLabel.parent().update()
self.pPDetailsDock.updateGeometry()
self.pPDetailsDock.update()
self.pPDetailsLabel.show()
self.pPDetailsLabel.parent().show()
# print(self.pPDetailsLabel.sizeHint())
self.fkChartView.setMinimumHeight(self.pPDetailsLabel.size().width())
self.fkChartView.setMaximumHeight(self.pPDetailsLabel.size().width())
self.fkChartView.setMinimumWidth(self.pPDetailsLabel.size().width())
self.fkChartView.setMaximumWidth(self.pPDetailsLabel.size().width())
self.fkChartView.updateGeometry()
self.fkChartView.show()
self.fkChartView.updateGeometry()
self.fkChartView.update()

我试图隐藏小部件,所以它们忘记了它们的大小和/或sizeHint(不确定(。我也尝试了一些updateGeometry((和update((,但似乎没有帮助。

一个主意,有人吗?

我在更新QLabel:内容的slot方法中这样做,最终使它按预期工作

self.fkChartView.hide()
self.pPDetailsLabel.setText(self.canvas.grayScottModel.getPearsonPatternDescription(specie=type))
self.pPDetailsLabel.adjustSize()
self.pPDetailsLabel.parent().adjustSize()
# Sets the dimensions of the chart folowing the label width
self.fkChartView.setMinimumHeight(self.pPDetailsLabel.size().width())
self.fkChartView.setMaximumHeight(self.pPDetailsLabel.size().width())
self.fkChartView.setMinimumWidth(self.pPDetailsLabel.size().width())
self.fkChartView.setMaximumWidth(self.pPDetailsLabel.size().width())
self.fkChartView.adjustSize()
self.fkChartView.show()
self.pPDetailsDock.adjustSize()

所以我首先隐藏了QChartView,这样它的尺寸就不会干扰,那么所有的魔术都要归功于adjustSize((调用。我在QLabel的内容更新后在它上做这件事,然后是它的父级(我的QDockWidget中的顶部QGroupBox(。QChartView仍然隐藏,我强迫它的尺寸,然后展示最后调整QDockWidget的大小。

它正是我想要的:如果文本较宽,图表会展开但保持方形,如果文本较窄,图表将缩小,但保持方形。底座的总高度也会根据需要进行调整,而不会停留得越来越长,以容纳以前的大型QLabel内容。

最新更新