2
我创建了一个类,我想在另一个类中添加这个类(都是布局),但我得到的唯一错误信息是程序崩溃。将班级布局添加到其他班级布局:“程序意外完成。”
我觉得有一些明显的逻辑缺陷,但我没有找到它,我可以单独显示他们两个,但是当我尝试添加一个到另一个程序崩溃。下面是代码:
Mesure.h:
Mesure.cpp:
Mesure::Mesure(QString angle) : QWidget()
{
QHBoxLayout *m_hlayoutMesure = new QHBoxLayout;
QCheckBox *m_checkboxMesure = new QCheckBox(this);
QToolButton *m_buttonClose = new QToolButton(this);
QLabel *m_labelAngle = new QLabel(angle, this);
m_buttonClose->setText("X");
m_hlayoutMesure->addWidget(m_checkboxMesure);
m_hlayoutMesure->addWidget(m_labelAngle);
m_hlayoutMesure->addWidget(m_buttonClose);
setLayout(m_hlayoutMesure);
}
PanneauMesure.h:
class PanneauMesure : public QWidget
{
public:
PanneauMesure();
void add(Mesure *mesure);
private:
QVBoxLayout *m_vlayoutMesures;
};
PanneauMesure.cpp:
PanneauMesure::PanneauMesure() : QWidget()
{
QVBoxLayout *m_vlayoutMesures = new QVBoxLayout;
setLayout(m_vlayoutMesures);
}
void PanneauMesure::add(Mesure *mesure)
{
m_vlayoutMesures->addWidget(mesure);
setLayout(m_vlayoutMesures);
}
main.cpp中:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
PanneauMesure panneau;
Mesure mesure("14°");
panneau.add(&mesure);
return app.exec();
}
编辑: 问题解决了,我不得不修改这些文件是这样的:
Mesure.cpp:
Mesure::Mesure(QString angle) : QWidget(),
m_hlayoutMesure(new QHBoxLayout(this)),
m_checkboxMesure(new QCheckBox(this)),
m_buttonClose(new QToolButton(this)),
m_labelAngle(new QLabel(angle, this))
{
m_buttonClose->setText("X");
m_hlayoutMesure->addWidget(m_checkboxMesure);
m_hlayoutMesure->addWidget(m_labelAngle);
m_hlayoutMesure->addWidget(m_buttonClose);
setLayout(m_hlayoutMesure);
}
PanneauMesure.cpp:
PanneauMesure::PanneauMesure() : QWidget(),
m_vlayoutMesures(new QVBoxLayout(this))
{
setLayout(m_vlayoutMesures);
}
void PanneauMesure::add(Mesure *mesure)
{
m_vlayoutMesures->addWidget(mesure);
setLayout(m_vlayoutMesures);
}
非常感谢。我做了你所说的,现在它很好用:) – Leo