【发布时间】:2018-05-24 04:11:02
【问题描述】:
我有两个Classes、Class A 和Class B,它们可以相互访问。
在Class A 我有一个QVBoxLayout,称为mVLayout,所有其他布局都将是添加到mVLayout。
在a.cpp:
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);
}
到目前为止,这工作正常。但是我之所以让这两个Classes可以互相访问是因为我想在Class B中将mHLayout添加到mVLayout。也许添加布局的正确方法是上面提到的方法。但是,如果我确实想在Class B 中为Class A mVLayout 添加布局,那可行吗?
我试过这个:在Class B构造函数中,通过添加一个新行(我还删除了Class A构造函数中的addlayout行):testingA->mVLayout->addLayout(mHLayout);
我也试过这个:
testingA = new A;
testingA->mVLayout->addLayout(mHLayout);
但结果我收到了这个错误:
程序意外结束。 进程被强行结束。
为什么会这样?有人可以提供一种在Class B 中为Class A 添加布局的方法吗?
谢谢。
【问题讨论】: