qt 之简单计算器

包含在这里插入图片描述在这里插入图片描述
工程文件,的说明如上图,
这个是设计的窗口。
设计的窗口和计算演示如下:
在这里插入图片描述
其中test.h的代码如下:

#ifndef TEST1_H
#define TEST1_H

#include <QtWidgets/QMainWindow>
#include "ui_test1.h"

class test1 : public QMainWindow
{
	Q_OBJECT

public:
	test1(QWidget *parent = 0);
	~test1();

	//添加这一段代码
	public slots://槽函数声明标志
	void caculate();

private:
	Ui::calculator ui;
};

#endif // TEST1_H

窗口类test1,继承QMainWindow,同时要有Q_OBJECT,它的定义如下:

#define Q_OBJECT \
public: \
    Q_OBJECT_CHECK \
    QT_WARNING_PUSH \
    Q_OBJECT_NO_OVERRIDE_WARNING \
    static const QMetaObject staticMetaObject; \
    virtual const QMetaObject *metaObject() const; \
    virtual void *qt_metacast(const char *); \
    virtual int qt_metacall(QMetaObject::Call, int, void **); \
    QT_TR_FUNCTIONS \
private: \
    Q_OBJECT_NO_ATTRIBUTES_WARNING \
    Q_DECL_HIDDEN_STATIC_METACALL static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); \
    QT_WARNING_POP \
    struct QPrivateSignal {}; \
    QT_ANNOTATE_CLASS(qt_qobject, "")

/* qmake ignore Q_OBJECT */

接下来是类的构造函数的声明和析构函数的声明,构造函数和析构函数的定义在test1.cpp里,如下:
`test1::test1(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	//添加关联代码,必须放在 setupUi 函数之后,信号与槽机制
	connect(ui.cal, SIGNAL(clicked()), this, SLOT(caculate()));
}

test1::~test1()
{

}`
可以看到,构造函数里包含两个东西,第一个是启动Ui函数,第二个是connect函数,将信号SIGNAL(clicked())和槽SLOT(caculate())连接起来,其中ui.cal,cal是click的对象。

其中caculate()函数的定义在test1.cpp中,声明在test1.h中,定义如下:

void test1::caculate()
{
QString estr1 = “can not devide 0!”;
QString estr2 = “please choose caculate option!”;

double n1 = ui.num1->text().toDouble();
double n2 = ui.num2->text().toDouble();


double out = 0;
if (ui.plus->isChecked())
{
	out = n1 + n2;
}
else if (ui.minus->isChecked())
{
	out = n1 - n2;
}
else if (ui.mutiply->isChecked())
{
	out = n1 * n2;
}
else if (ui.div->isChecked())
{

    out = n1 / n2;
}
else
{
	ui.result->setText(estr2);
	return;
}

ui.result->setText(QString::number(out, 'f', 10));

}

main.cpp函数主要运行窗口,
`#include "test1.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	test1 w;

	w.show();
	return a.exec();
}`



猜你喜欢

转载自blog.csdn.net/u013772051/article/details/84330147