在一个previous question中,给我的代码显示了一个工作的heightForWidth()的实现(谢谢,@Kuba ),但它只对顶级QWidget这样做。我试着把它复制成一个QMainWindow,但是它没有工作。
这是heightForWidth()为顶级QWidget工作的代码。
QWidget w;
QVBoxLayout * l = new QVBoxLayout(&w);
l->addWidget(new Widget);
w.show();这就是我尝试为QMainWindow实现相同的地方,但是在这里,heightForWidth()没有任何效果(即使它被调用了):
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实现不能工作呢?
发布于 2013-09-29 13:02:49
首先,请注意,即使QMainWindow是占位符,也需要将其设置为中心小部件。
那么,您需要做的就是像已经做的那样,有一个带有布局的占位符小部件,然后将两个小部件放在里面:一个要保持正方形,再加上一个占位符来获取未使用的空间。
或者,为什么要坚持小部件是正方形的呢?只需在内部绘制正方形部分,然后用默认背景角色清除其余部分。
https://stackoverflow.com/questions/19076544
复制相似问题