美文网首页
Qt手动创建QScrollArea,遇到的坑

Qt手动创建QScrollArea,遇到的坑

作者: e196efe3d7df | 来源:发表于2022-07-22 10:27 被阅读0次

    记录一下,最近遇到的一个bug,我打算手动创建QScrollArea, 调用QScrollArea::setWidget(QWidget *widget),设置显示的widget,此widget,我已经设置好了布局,正常应该是widget的大小随着QScrollArea的大小自适应改变,但实际效果是,widget只是固定大小,并没有随着QScrollArea的尺寸改变而改变。查了一圈资料,发现一个这个问题:void setWidgetResizable(bool resizable)

    widgetResizable : bool

    这个属性决定scroll area是否会设置视图窗口的大小。
    默认是false。
    但是!!!!如果你用Designer来创建QScrollArea,这个属性就是true!!!wtf???

    void QScrollArea::setWidget(QWidget *widget)

    为什么要解释一下setWidget,因为这个api也坑点满满,翻译出来,你就知道了!
    翻译:

    • 此API用于设置scroll areawidget.
    • 这个widget会成为scroll area的子窗口,如果scroll area被销毁或者scroll area设置了新的widget,则此widget也会随之销毁。
    • 这个widgetautoFillBackground会自动被设置为true.
    • 如果当这个widget添加的时候,scroll area已经是可见状态,则你必须要要显式调用一次widgetshow方法。
    • 注意:如果你在这个widget上添加布局,则必须在调用QScrollArea::setWidget(QWidget *widget)之前就要添加好;反之,如果在调用QScrollArea::setWidget(QWidget *widget)之后添加widget布局,这个widget将会不可见,除非调用一次scroll areashow()方法。In this case, you can also not show() the widget later.(这一句实在没搞懂说的啥??)

    相关文章

      网友评论

          本文标题:Qt手动创建QScrollArea,遇到的坑

          本文链接:https://www.haomeiwen.com/subject/rzlmirtx.html