在QGroupBox外部实例化QFrame时,将QFrame A添加到QGroupBox B的布局中

时间:2015-09-21 10:55:20

标签: c++ qt

在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 );

这导致我的框架未在组框中正确添加。它被添加在左上角。并且多次调用此代码会注意在彼此之下添加帧,但每帧将在完全相同的位置。这就像框架在布局中不均匀。 Unwanted Behavior

然而,当我这样称呼时(第二算法):

  CustomFrame * aFrame = new CustomFrame ();
  CustomGbInstance.layout()->addWidget(highLevelAlertFrame);

工作正常。多次调用此代码将导致在我的groupBox中完全垂直对齐几个帧。 WantedBehavior

在我实例化框架的范围内调用QVboxLayout::addWidget(QWidget *)方法可以得到我想要的内容。但是,如果我将QVboxLayout::addWidget(QWidget *)方法调用到另一个范围,而QWidget *通过另一个方法(例如使用我的addCustomFrame方法),则表现得非常奇怪。

我附上2张照片:

第一个是不受欢迎的行为(第一个算法是3次),第二个是我想要的(以及我在第二次算法3次时得到的)。

0 个答案:

没有答案