在QGroupBox的QVboxLayout中添加QFrame时遇到了不需要的行为。
我有一个自定义QFrame类:
class CustomFrame : public QFrame
{
}
我有一个类CustomGb
继承QGroupBox
方法addFrame
,该方法应该将类型A框架添加到groupBox的布局
class CustomGb: public QGroupBox
{
Q_OBJECT
public:
CustomGb();
~CustomGb();
void addCustomFrame(CustomFrame* aFrame);
private:
QVBoxLayout * _timeLayout;
}
CustomGb::CustomGb()
{
_timeLayout=new QVBoxLayout;
setLayout(_timeLayout);
}
CustomGb::addCustomFrame(customFrame * aFrame)
{
_timeLayout->addWidget(aFrame);
}
我想在我的分组框中添加一个新框架。
我自然称这个代码(第一个算法):
CustomFrame * aFrame = new CustomFrame ();
CutomGbInstance.addCustomFrame(aFrame );
这导致我的框架未在组框中正确添加。它被添加在左上角。并且多次调用此代码会注意在彼此之下添加帧,但每帧将在完全相同的位置。这就像框架在布局中不均匀。
然而,当我这样称呼时(第二算法):
CustomFrame * aFrame = new CustomFrame ();
CustomGbInstance.layout()->addWidget(highLevelAlertFrame);
工作正常。多次调用此代码将导致在我的groupBox中完全垂直对齐几个帧。
在我实例化框架的范围内调用QVboxLayout::addWidget(QWidget *)
方法可以得到我想要的内容。但是,如果我将QVboxLayout::addWidget(QWidget *)
方法调用到另一个范围,而QWidget *
通过另一个方法(例如使用我的addCustomFrame
方法),则表现得非常奇怪。
我附上2张照片:
第一个是不受欢迎的行为(第一个算法是3次),第二个是我想要的(以及我在第二次算法3次时得到的)。