1

問題は、アプリケーションを実行すると、問題の原因を明らかにせずにアプリケーションを閉じるメッセージが表示されることです。

アプリケーションは、2 つの数値を加算するための単純な電卓です。
このアプリケーションには、6 つの GUI オブジェクトが含まれています。数字を入力するための
2 つ。 3 、表示する2 、、および 2 つの数値の加算結果を出力するもう 1 つは、です。 最後に、結果を. QSpinBox
QlabelQlabel+=and this object is the reason of the problem
QPushButtonQlabel

コードを表示します
。3 つのファイル ( main.cppcalculator.hcalculator.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
4

1 に答える 1