클래스를 만들었으므로이 클래스를 다른 클래스에 추가하고 싶습니다. 둘 다 레이아웃이지만, 오류 메시지는 프로그램이 충돌한다는 것입니다.다른 클래스 레이아웃에 클래스 레이아웃 추가 : "프로그램이 예기치 않게 끝났습니다."
명백한 논리 결함이있는 것처럼 느껴지지만 찾지 못했습니다. 둘 다 별도로 표시 할 수 있지만 다른 하나를 추가하려고하면 프로그램이 충돌합니다.
Mesure.h :
class Mesure : public QWidget
{
public:
Mesure(QString angle);
private:
QToolButton *m_buttonClose;
QHBoxLayout *m_hlayoutMesure;
QCheckBox *m_checkboxMesure;
QLabel *m_labelAngle;
};
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);
}
여기에 코드입니다,210
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