Qt的QHBoxLayout,负责百分比大小(Qt QHBoxLayout percentage s

2019-07-18 20:19发布

我怎样才能维持两个QHBoxLayouts之间的纵横比例是多少?

例如我想QHBoxLayout,负责是整个窗口宽度的三分之一,而另一个是整个窗口宽度的三分之二:

我怎样才能做到这一点? 我试图与其中的控件的大小提示搞乱但没有奏效

Answer 1:

无效QSizePolicy :: setHorizo​​ntalStretch(UCHAR的stretchFactor)

例:

QHBoxLayout* layout = new QHBoxLayout(form);

QWidget* left = new QWidget(form);
QSizePolicy spLeft(QSizePolicy::Preferred, QSizePolicy::Preferred);
spLeft.setHorizontalStretch(1);
left->setSizePolicy(spLeft);
layout->addWidget(left);

QWidget* right = new QWidget(form);
QSizePolicy spRight(QSizePolicy::Preferred, QSizePolicy::Preferred);
spRight.setHorizontalStretch(2);
right->setSizePolicy(spRight);
layout->addWidget(right);


Answer 2:

的回答york.beta工作,但我更喜欢少得多的代码。

至少sizePolicy是默认首选/首选。

默认的策略是优选的/优选的,这意味着,窗口小部件可以自由地调整大小,但喜欢是大小sizeHint()返回。

你可以简单地使用addWidget第二个参数伸展部件。

QHBoxLayout *layout = new QHBoxLayout( this );
layout->setContentsMargins( 0, 0, 0, 0 );
layout->setSpacing( 0 );

QPushButton *left = new QPushButton( "133px", this );
left->setStyleSheet( "QPushButton{border: 1px solid red;}" );
QPushButton *right = new QPushButton( "267px", this );
right->setStyleSheet( "QPushButton{border: 1px solid blue;}" );

layout->addWidget( left, 33 );
layout->addWidget( right, 66 );

this->setLayout( layout );
this->setFixedWidth( 400 );

见http://doc.qt.io/qt-5/qboxlayout.html#addWidget

和http://doc.qt.io/qt-5/qwidget.html#sizePolicy-prop



Answer 3:

您可以编辑sizePolicy的部件和设置更高的horizo​​ntalStretch在右边的窗口小部件。



文章来源: Qt QHBoxLayout percentage size
标签: c++ qt qt4