繁体   English   中英

在QT中,如何在自定义小部件中为布局定义几何

[英]In QT, How to define the geometry for the Layout in a custom Widget

在自定义QWidget (例如MyWidget ),我包括一个布局来管理子部件:

MyWidget window;
QPushButton button;
QVBoxLayout layout(window);
layout.addWidget(button);
window.show();

我希望布局处于特定的位置和大小,默认情况下,QWidget将其设置为整个几何。

如何设置layout将用于管理其空间的几何图形?

作为一个间接的问题:布局用于设置子几何的功能是什么?

QPushButton *button = new QPushButton;
verticalLayout->addSpacing(300);
verticalLayout->addWidget(button);
button->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
button->setMinimumSize(500, 200);
button->setMaximumSize(500, 200);

如果同时需要垂直和水平间距,请使用QGridLayout

QLayout将以下两者的摘要用作边距:

  • 父窗口小部件的内容页边距。
  • 布局内容页边距。

解决方案是在自定义窗口小部件构造函数中将内容边距设置为所需值。 并且在创建布局时,将其内容边距设置为0。

this->setContentsMargins(left, top, right, bottom);
// ...
layout->setContentsMargins(0,0,0,0);

Layout setGeometry由QWidget resize事件调用,并根据它设置子控件的大小。 由于所有功能都不是虚拟的,因此不可能(或至少很难)修改此行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM