QWebView没有正确调整大小
我有一个水平布局作为中央控件的QMainWindow。水平布局包含三个小部件。 这里是代码:QWebView没有正确调整大小
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);`
其中浏览器是一个QWebView。
每当我调整了主窗口浏览器没有得到调整,同时clusteringPlot(扩展了QWidget)和navigationTree(扩展QTreeWidget)做的。
我怎样才能改变我的代码,这样也浏览器中得到调整?我看了一下类似的问题,但我找不到解决我的问题的方法。
感谢很多提前 罗塞拉
决定如何分配空间时,布局查询其子女的最小尺寸。因此,你的首要任务是确保所有的部件占据你的QHBoxLayout
知道他们的最小可用大小是什么:
- 由于
NavigationTree
继承QTreeWidget
,我假设它已经提供一个合理的最小尺寸(通过minimumSizeHint()
继承自QAbstractScrollArea
))。如果这需要改变,重新执行QWidget::minimumSizeHint()
如下。 - 如果
ClusteringPlot
直接从QWidget
继承,它可能不是提供一个合理的最小尺寸的布局,所以你需要提供一个。你可以将或者作为虚拟函数QWidget::minimumSizeHint()
作为ClusteringPlot
(特别有用,如果你能够根据对象的状态计算大小)或请致电clusteringPlot->setMinimumSize(...);
。 - 由于您口述的最小尺寸为您
QWebView
,叫browser->setMinimumSize(1024, 768);
。
一旦已经分配给满足其各子构件的minimumSizeHint()
S的足够的空间,一个QBoxLayout
开始分配剩余空间根据每个插件的stretchFactor
。设置拉伸因子的最简单方法是将小部件添加到布局。试着改变你的代码:
layout.addWidget(navigationTree, 1);
layout.addWidget(clusteringPlot, 1);
layout.addWidget(browser, 2);
这告诉任何空余空间应该在比1被分配布局:1:2,即,如果40个额外的像素变得可用,10去navigationTree
,10 clusteringPlot
和20至browser
。
我试过你的解决方案,但是这并不能解决我的问题。当我打开窗口时,所有的尺寸都是合适的,但是一旦窗口变小,浏览器就会滚动而不是调整显示的网页大小。有没有办法调整浏览器中显示的网页大小,使其永远不会滚动? – Rossella 2012-07-19 07:29:29
这样做的正确的方式取决于你怎么想,你正在做可供指派额外的空间。你是否希望在你的小部件之间按照相同的比例分配额外的空间?你想把这个空间分配给你的一个小部件吗?也许你想'clusteringPlot'获得额外空间的三分之一,而'browser'获得剩下的三分之二?如果您可以提供更多信息,我很乐意提供更详细的答案:) – sjwarner 2012-07-16 12:54:20
理想情况下,我希望NavigationTree具有1/4的空间,ClusteringPlot具有1/4和浏览器具有剩余的1/2。我的问题是,如果我让浏览器小于一定大小(1024x648)而不是调整网页大小,我会得到一个可滚动的区域,我想避免 – Rossella 2012-07-17 02:22:36