引文
链接: https://pan.baidu.com/s/1lKyXTOS8UXJtFRjCASlcA 提取码: vh24
一份在Visual Studio的QT中写的简单的闹钟,Qt GUI Application项目,经过调试可能还是会有少些bug,现在将小玩意同大家分享,很期待有朋友一起讨论,文章项目资源可以自行下载,我在调试时的qDebug还留着,方便理解。
代码中主要依靠 IsOperatorClicked 和 IsStoredNumber 来判断是否进行运算,下面是一个简单的运行演示。
| 步骤 | 点击的按钮 |
|---|---|
| 初始 | IsOperatorClicked = false; IsStoredNumber = false; |
| 1 | num4 |
| displayLabel.append(button->text()); | |
| 2 | actionMul(+) |
| storeNumber=4; IsStoredNumber= true | |
| storeOperator=+; IsOperatorClicked= true | |
| 3 | num2 |
| IsOperatorClicked = false | |
| 4 | actionEqual(=) |
| calculate_result(); IsStoredNumber = false |
写文章才发现英语单词写错了尬尬,把Equal写成Euqal,就不改了哈,看到的知到它是错的
Calculator.ui
界面设计及控件命名


Calculator.h
#pragma once
#include <QMainWindow>
#include "ui_Calculator.h"
#include <QAbstractButton>
#include <QtWidgets/QButtonGroup>
#include <QtCore>
namespace Ui {
class Calculator;
}
class Calculator : public QMainWindow
{
Q_OBJECT
public:
Calculator(QWidget *parent = 0);
~Calculator();
private slots:
void numberGroup_clicked(QAbstractButton*); //123456789
void actionGroup_clicked(QAbstractButton*); //+-*/
void on_actionDel_clicked(); //Del
void on_actionEqual_clicked(); //=
void on_comma_clicked(); //.
void on_actionClear_clicked(); //C
void on_actionPercent_clicked(); //%
void on_actionSign_clicked(); //+/-
private:
Ui::CalculatorClass* ui;
//限制数值长度
const int DIGIT_LIMIT = 16;
//用于检查上一个点击的按钮是否为运算符
bool IsOperatorClicked;
//用于检查数字是否存储在内存中
bool IsStoredNumber;
//存储最后点击的运算符
QChar storedOperator;
//存储数字
double storedNumber;
//根据存储的号码和显示的号码计算结果
void calculate_result();
QButtonGroup* actionGroup; //运算符按钮组
QButtonGroup* numberGroup; //数字按钮组
};
Calculator.cpp
#include "Calculator.h"
Calculator::Calculator(QWidget* parent)
: QMainWindow(parent),
ui(new Ui::CalculatorClass),
storedNumber(0)
{
ui->setupUi(this);
//设置空显示面板
ui->displayLabel->clear();
//将operator和store number和comma标志设置为false
IsOperatorClicked = false;
IsStoredNumber = false;
//分配空间
numberGroup = new QButtonGroup;
actionGroup = new QButtonGroup;
//将按钮放入
numberGroup->addButton(ui->num1, 1)

最低0.47元/天 解锁文章
2777





