私は2つのClasses
,Class A
とClass B
を持っています。これらはお互いにアクセスできます。 Class A
には、と呼ばれるQVBoxLayout
があり、他のすべてのレイアウトはmVLayout
に追加されます。 a.cpp
で:あるクラスから別のクラスへレイアウトを追加Qtで動作しないクラス
A::A(QWidget *parent)
: QMainWindow(parent)
{
B testingB; //Class B object
mWidget = new QWidget(this);
setCentralWidget(mWidget);
mVLayout = new QVBoxLayout(mWidget);
mVLayout->addLayout(testingB.mHLayout); //adding Class B mHLayout to Class A mVLayout;
mWidget->setLayout(mVLayout);
}
とb.h
で:
class A;
class B
{
public:
B();
QHBoxLayout *mHLayout;
A *testingA; //Class A object
};
b.cpp
:
B::B()
{
QPushButton *btn1 = new QPushButton("Btn1");
QPushButton *btn2 = new QPushButton("Btn2");
mHLayout = new QHBoxLayout;
mHLayout->addWidget(btn1);
mHLayout->addWidget(btn2);
}
これは、これまで正常に動作します。しかし、私がそれらの2つを作った理由は、mHLayout
をmVLayout
にClass B
に追加したいということです。おそらく、レイアウトを追加する適切な方法は、上記の方法です。しかし、もしClass A mVLayout
にClass B
のレイアウトを追加したいのであれば、それは可能ですか?
私はこれを試してみました:新しい行(私もClass A
コンストラクタでaddlayoutラインを削除)を追加することによって、Class B
コンストラクタで:testingA->mVLayout->addLayout(mHLayout);
をし、私もこの試みた:
testingA = new A;
testingA->mVLayout->addLayout(mHLayout);
をしかし、それが判明しました
The program has unexpectedly finished. The process was ended forcefully.
なぜこれが起こるだろう:私はこのエラーを得ましたか。そして誰かがClass A
にレイアウトを追加する方法をClass B
に提供できますか?
ありがとうございます。