QWebView没有正确调整大小

时间:2012-07-16 08:17:59

标签: qt

我有一个QMainWindow,水平布局作为中央小部件。水平布局包含三个小部件。 这是代码:

this.navigationTree=new NavigationTree();
Browser browser = new Browser();
this.clusteringPlot=new ClusteringPlot();
QWidget centralWidget=new QWidget();
QHBoxLayout layout=new QHBoxLayout();
layout.addWidget(navigationTree);
layout.addWidget(clusteringPlot);
layout.addWidget(browser);
centralWidget.setLayout(layout);
this.setCentralWidget(centralWidget);`

其中Browser是QWebView。

每当我调整主窗口大小时,在clusteringPlot(扩展QWidget)和navigationTree(扩展QTreeWidget)时,浏览器不会调整大小。

如何更改代码以便浏览器调整大小?我看了类似的问题,但我找不到解决问题的方法。

提前多多感谢 洛舍

1 个答案:

答案 0 :(得分:0)

布局在决定如何分配空间时查询其子项的最小大小。因此,您的首要任务是确保占用QHBoxLayout的所有小部件都知道它们的最小有用大小是什么:

  • 由于NavigationTree继承QTreeWidget,我假设它已经提供了合理的最小尺寸(通过继承自minimumSizeHint()的{​​{1}}))。如果需要更改,请重新实现QAbstractScrollArea,如下所示。
  • 如果QWidget::minimumSizeHint()直接从ClusteringPlot继承,则可能无法为布局提供合理的最小尺寸,因此您需要提供一个。您可以 重新实现QWidget::minimumSizeHint()作为QWidget中的虚拟函数(如果您能够根据对象的状态计算大小,则非常有用)致电ClusteringPlot
  • 由于您要规定clusteringPlot->setMinimumSize(...);的最小尺寸,请致电QWebView

如果已分配足够的空间来满足其每个子窗口小部件的browser->setMinimumSize(1024, 768);,则minimumSizeHint()会根据每个窗口小部件的stretchFactor开始分配剩余空间。设置拉伸因子的最简单方法是将小部件添加到布局中。尝试将代码更改为:

QBoxLayout

这告诉布局应该以1:1:2的比例分配任何备用空间,即如果有40个额外像素可用,10转到layout.addWidget(navigationTree, 1); layout.addWidget(clusteringPlot, 1); layout.addWidget(browser, 2); ,10到navigationTree和20到clusteringPlot