首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QWidget::heightForWidth()和QMainWindow

QWidget::heightForWidth()和QMainWindow
EN

Stack Overflow用户
提问于 2013-09-29 09:43:24
回答 1查看 920关注 0票数 1

在一个previous question中,给我的代码显示了一个工作的heightForWidth()的实现(谢谢,@Kuba ),但它只对顶级QWidget这样做。我试着把它复制成一个QMainWindow,但是它没有工作。

这是heightForWidth()为顶级QWidget工作的代码。

代码语言:javascript
复制
QWidget w;
QVBoxLayout * l = new QVBoxLayout(&w);
l->addWidget(new Widget);
w.show();

这就是我尝试为QMainWindow实现相同的地方,但是在这里,heightForWidth()没有任何效果(即使它被调用了):

代码语言:javascript
复制
QMainWindow mainWnd;
QWidget *w = new QWidget;
QVBoxLayout * l = new QVBoxLayout(w);
l->addWidget(new Widget);
mainWnd.setCentralWidget(w);
// Second widget to take unused space.
QFrame * btm = new QFrame;
btm->setFrameShape(QFrame::Panel);
btm->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
l->addWidget(btm);
mainWnd.show();

那么,为什么QMainWindow实现不能工作呢?

EN

回答 1

Stack Overflow用户

发布于 2013-09-29 13:02:49

首先,请注意,即使QMainWindow是占位符,也需要将其设置为中心小部件。

那么,您需要做的就是像已经做的那样,有一个带有布局的占位符小部件,然后将两个小部件放在里面:一个要保持正方形,再加上一个占位符来获取未使用的空间。

或者,为什么要坚持小部件是正方形的呢?只需在内部绘制正方形部分,然后用默认背景角色清除其余部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19076544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档