問題は、アプリケーションを実行すると、問題の原因を明らかにせずにアプリケーションを閉じるメッセージが表示されることです。
アプリケーションは、2 つの数値を加算するための単純な電卓です。
このアプリケーションには、6 つの GUI オブジェクトが含まれています。数字を入力するための
2 つ。
3 、表示する2 、、および 2 つの数値の加算結果を出力するもう 1 つは、です。
最後に、結果を. QSpinBox
Qlabel
Qlabel
+
=
and this object is the reason of the problem
QPushButton
Qlabel
コードを表示します
。3 つのファイル ( main.cpp
、calculator.h
、calculator.cpp
) があります。
-- Main.cpp --
#include "calculat.h"
int main(int argc, char *argv[]){
QApplication app(argc, argv);
Calculator calc;
calc.show();
return app.exec();
}
-- 計算機.h --
#ifndef CALCULATOR_H
#define CALCULATOR_H
#include <QWidget>
class QSpinBox;
class QLabel;
class Calculator : public QWidget {
Q_OBJECT
public:
Calculator();
private slots:
void on_addNumber_clicked();
public:
QSpinBox *firstValueSpinBox;
QSpinBox *secondValueSpinBox;
QLabel *resultLabel;
};
#endif // CALCULATOR_H
-- 電卓.cpp --
#include "calculator.h"
#include <QPushButton>
#include <QSpinBox>
#include <QLabel>
#include <QHBoxLayout>
Calculator::Calculator(){
QPushButton *addButton = new QPushButton("Add");
firstValueSpinBox = new QSpinBox();
secondValueSpinBox = new QSpinBox();
resultLabel = new QLabel();
QLabel *addLabel = new QLabel("+");
QLabel *equalLabel = new QLabel("=");
connect(addButton, SIGNAL(clicked()), this, SLOT(on_addNumber_clicked()));
QHBoxLayout *layout = new QHBoxLayout(this);
layout->addWidget(firstValueSpinBox);
layout->addWidget(addLabel);
layout->addWidget(secondValueSpinBox);
layout->addWidget(addButton);
layout->addWidget(equalLabel);
layout->addWidget(resultLabel);
}
void Calculator::on_addNumber_clicked(){
int num = this->firstValueSpinBox->value();
int num2 = this->secondValueSpinBox->value();
QString outResult = QString::number(num + num2);
resultLabel->setText(outResult); //<< the problem here
}
私はこの行で疑います:
resultLabel->setText(outResult);
その前の行を削除すると、アプリケーションは正常に動作します。
結論、Qlabel
最終結果の表示を担当するこのオブジェクトの問題。
QLabel *resultLabel; // declaration in calculator.h
resultLabel->setText(outResult); // in calculator.cpp