• 6303阅读
  • 9回复

[提问]使用Layout后,父亲的最小宽度等于各个儿子的最小宽度之和? [复制链接]

上一主题 下一主题
离线tthheedhz
 
只看楼主 倒序阅读 楼主  发表于: 2012-05-11
例如:

Layout中,横向添加了两个儿子,那么,当我拖动窗体边框,来缩小控件宽度,缩到两个儿子的宽度之和,就不能再缩小了。

有什么办法解决?
离线tthheedhz
只看该作者 1楼 发表于: 2012-05-11
引用楼主tthheedhz于2012-05-11 12:23发表的 使用Layout后,父亲的最小宽度等于各个儿子的最小宽度之和? :
例如:
Layout中,横向添加了两个儿子,那么,当我拖动窗体边框,来缩小控件宽度,缩到两个儿子的宽度之和,就不能再缩小了。
有什么办法解决?
.......

我要实现这样的效果:两个按扭是用Layout来横向排列的。

窗体,可以继续缩小。不受两个按扭的宽度限制。


离线tthheedhz
只看该作者 2楼 发表于: 2012-05-11
就是说就,希望窗体不受Layout限制,可以一直缩小下去。缩小到很小很小。
离线tthheedhz
只看该作者 3楼 发表于: 2012-05-11
上图的,那两个按扭,是被setFixedSize了的。就是说,高度宽度都是固定的,不可改变的。

离线passion_wu
只看该作者 4楼 发表于: 2012-05-11
将两个按钮的sizePolicy改为Preferred
然后恢复minimumSize和maxiumumSize就可以了
离线tthheedhz
只看该作者 5楼 发表于: 2012-05-11
引用第4楼passion_wu于2012-05-11 13:04发表的  :
将两个按钮的sizePolicy改为Preferred
然后恢复minimumSize和maxiumumSize就可以了

还是不行。例如:下面的例子,窗口缩小到(300,300),就不能再缩小了。


int main(int argc,char*argv[])
{
    QApplication app(argc,argv);
    QWidget w;
    QPushButton tb(&w);
    tb.setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
    tb.setMinimumSize(300,300);
    tb.setMaximumSize(500,500);
    QGridLayout* layout=new QGridLayout(&w);
    layout->addWidget(&tb);
    w.show();

    return app.exec();
}

离线tthheedhz
只看该作者 6楼 发表于: 2012-05-11
引用第4楼passion_wu于2012-05-11 13:04发表的  :
将两个按钮的sizePolicy改为Preferred
然后恢复minimumSize和maxiumumSize就可以了

5楼的例子,我希望,当缩小到(300,300)的时候,窗口可以继续缩小。而按扭则维持最小的(300,300)不变。

能否做到?

离线tthheedhz
只看该作者 7楼 发表于: 2012-05-11
解决:

5楼的例子,加一行代码,即OK.
int main(int argc,char*argv[])
{
    QApplication app(argc,argv);
    QWidget w;
    QPushButton tb(&w);
    tb.setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
    tb.setMinimumSize(300,300);
    tb.setMaximumSize(500,500);
    QGridLayout* layout=new QGridLayout(&w);
    layout->addWidget(&tb);
    layout->setSizeConstraint(QLayout::SetNoConstraint);   //加了这行代码。
    w.show();

    return app.exec();
}
离线benbenmajia

只看该作者 8楼 发表于: 2012-05-11
layout为最顶层的优先,使用layout之后会使其他设置大小的接口失效。
安然.....
离线kimtaikee

只看该作者 9楼 发表于: 2012-05-11
你看那个Button上面的文字了吗,button 不能缩小到连文字都显示不了的地步,既然你想把两个button并排然后可以任意所辖,那么你可以new 一个新的QWidget 和 QScrollArea 的然后把这个layout设定到这个新的widget上面,接着调用scrollArea->setWidget(theWidget) 这样的话你想怎样缩小都没有问题了。

快速回复
限100 字节
 
上一个 下一个