设计一个程序,要求能够计算两个数字的和,两个数字由文本框输入,当点击等于的时候,再另一个标签中输出数字的和
需要两个QLineEdit,一个QPushButton,两个QLabel,还有一个用于简单布局的QHBoxLayout。
需要把QString转为int,所以使用toInt函数,还需要把int转为QString,需要使用number函数,缺省参数表示进制为10
//头文件 widhet.h
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QHBoxLayout> class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots: void calc(); //槽函数,用于计算并显示 private: QLabel *label_ans, *label_add; QLineEdit *num1, *num2; QPushButton *button_calc; QHBoxLayout *layout; }; #endif // WIDGET_H
//widget.cpp1
#include "widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) { label_ans = new QLabel("0", this); label_add = new QLabel("+", this); num1 = new QLineEdit(this); num2 = new QLineEdit(this); button_calc = new QPushButton("=", this); layout = new QHBoxLayout; layout->addWidget(num1); layout->addWidget(label_add); layout->addWidget(num2); layout->addWidget(button_calc); layout->addWidget(label_ans); this->setLayout(layout); QObject::connect(button_calc, SIGNAL(clicked(bool)), this, SLOT(calc())); //信号槽 } Widget::~Widget() { } void Widget::calc() { label_ans->setText(QString::number(num1->text().toInt() + num2->text().toInt())); //获取文本消息以后,变成int,相加以后变成QString }//main.cpp是默认的东西,这里就不贴出来了
版本1.0运行截屏
可以选择不同的方式,包括加减乘除来进行运算,更改的主要地方是,原来的label_add标签,被替换成为一个QRadioButton了,是一个组,包含4个选项。
根据QLineEdit的内容,进行运算,主要是判断除0
//头文件
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QHBoxLayout> #include <QRadioButton> #include <QVBoxLayout> class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots: void calc(); private: QLabel *label_ans; QLineEdit *num1, *num2; QPushButton *button_calc; QHBoxLayout *layout; QRadioButton *select[4]; //选项组,因为全局只有一个组,所以不用设为一个RadioGroup QVBoxLayout *select_layout; //专门给上面的选项布局用的 垂直布局方式 }; #endif // WIDGET_H
#include "widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) { label_ans = new QLabel("0", this); select[0] = new QRadioButton("+", this); select[1] = new QRadioButton("-", this); select[2] = new QRadioButton("*", this); select[3] = new QRadioButton("/", this); num1 = new QLineEdit(this); num2 = new QLineEdit(this); button_calc = new QPushButton("=", this); layout = new QHBoxLayout; select_layout = new QVBoxLayout; select_layout->addWidget(select[0]); select_layout->addWidget(select[1]); select_layout->addWidget(select[2]); select_layout->addWidget(select[3]); layout->addWidget(num1); layout->addLayout(select_layout); //嵌套布局 layout->addWidget(num2); layout->addWidget(button_calc); layout->addWidget(label_ans); this->setLayout(layout); QObject::connect(button_calc, SIGNAL(clicked(bool)), this, SLOT(calc())); } Widget::~Widget() { } void Widget::calc() { int a = num1->text().toInt(); int b = num2->text().toInt(); //因为会多次用到这些数据,所以提前取出来 if (select[0]->isChecked()) { label_ans->setText(QString::number(a + b)); } else if (select[1]->isChecked()) { label_ans->setText(QString::number(a - b)); } else if (select[2]->isChecked()) { label_ans->setText(QString::number(a * b)); } else if(select[3]->isChecked()) { if (b == 0) //判断是否为0 label_ans->setText("Zero Error"); else label_ans->setText(QString::number(a / b)); } else { label_ans->setText("Please Choose A Calc Method!"); } }版本1.1运行效果图