博客
关于我
Qt 简易计算器小程序
阅读量:315 次
发布时间:2019-03-03

本文共 2674 字,大约阅读时间需要 8 分钟。

刚接触Qt,没有使用QtDesigner来编写UI文件,纯用Visual Studio编写项目。这是一个不错的开始,下面将详细介绍项目的结构和实现。

项目结构包括以下几个文件:

  • calculator.h:定义了一个继承自QMainWindow的calculator类,包含了所有必要的UI组件如QLabel、QLineEdit、QRadioButton、QPushButton等。
  • calculator.cpp:实现了calculator类的初始化和布局设置,包括信号和槽的连接。
  • main.cpp:作为主窗口文件,包含了主窗口的构造和布局布局设置。
  • 项目实现

    在calculator.cpp中,首先初始化UI界面:

    calculator::calculator(QWidget *parent) : QMainWindow(parent) {    ui.setupUi(this);    // 初始化各个UI组件    number_1 = new QLabel("数字1:");    number_2 = new QLabel("数字2:");    numline_1 = new QLineEdit;    numline_2 = new QLineEdit;    // 输入验证    QRegExp regx("[0-9]+$");    QValidator *validator = new QRegExpValidator(regx);    numline_1->setValidator(validator);    numline_2->setValidator(validator);    // 运算符组    oper = new QButtonGroup;    plus = new QRadioButton("+");    minus = new QRadioButton("-");    multiply = new QRadioButton("*");    divide = new QRadioButton("/");    oper->addButton(plus);    oper->addButton(minus);    oper->addButton(multiply);    oper->addButton(divide);    oper->setExclusive(true);    // 结果显示    resultlabel = new QLabel("计算结果:");    result = new QLineEdit;    cal = new QPushButton("计算");    cal->setShortcut(QKeySequence("Enter"));    // 布局设置    mainlayout = new QGridLayout(ui.centralWidget);    mainlayout->addWidget(number_1, 0, 0);    mainlayout->addWidget(numline_1, 0, 1, 1, 3);    mainlayout->addWidget(number_2, 1, 0);    mainlayout->addWidget(numline_2, 1, 1, 1, 3);    mainlayout->addWidget(plus, 2, 0);    mainlayout->addWidget(minus, 2, 1);    mainlayout->addWidget(multiply, 2, 2);    mainlayout->addWidget(divide, 2, 3);    mainlayout->addWidget(cal, 3, 0, 1, 4);    mainlayout->addWidget(resultlabel, 4, 0);    mainlayout->addWidget(result, 4, 1, 1, 3);    // 信号和槽连接    connect(cal, SIGNAL(clicked()), this, SLOT(jisuan()));}

    在jisuan()方法中,实现了基本的四则运算:

    void calculator::jisuan() {    QString n1 = numline_1->text();    QString n2 = numline_2->text();    double num1 = n1.toDouble();    double num2 = n2.toDouble();    double res = 0.0;    if (plus->isChecked()) {        res = num1 + num2;    } else if (minus->isChecked()) {        res = num1 - num2;    } else if (multiply->isChecked()) {        res = num1 * num2;    } else if (divide->isChecked()) {        if (num2 == 0) {            result->setText("Error");            return;        }        res = num1 / num2;    }    // 格式化结果    QRegExp rx("(\\.){0,1}0+$");    QString res2 = QString("%1").arg(res, 0, 'f', -1).replace(rx, "");    result->setText(res2);}

    优化建议

  • 输入验证:确保用户只能输入数字,避免非法字符。
  • 运算符管理:使用QButtonGroup来管理不同的运算符,确保只有一个按钮被选中。
  • 结果格式化:使用QRegExp去除小数点后多余的零,确保结果显示简洁。
  • 错误处理:在除法时检查除数是否为零,避免程序崩溃。
  • 通过以上实现,可以构建一个简单的四则运算计算器,用户可以通过Visual Studio编写代码,使用Qt框架进行UI和逻辑开发。

    转载地址:http://apdq.baihongyu.com/

    你可能感兴趣的文章
    Oracle中merge into的使用
    查看>>
    oracle中sql查询上月、本月、上周、本周、昨天、今天的数据!
    查看>>
    oracle中sql的case语句运用--根据不同条件去排序!
    查看>>
    Oracle中Transate函数的使用
    查看>>
    oracle中关于日期问题的汇总!
    查看>>
    Oracle中常用的语句
    查看>>
    Oracle中序列的操作以及使用前对序列的初始化
    查看>>
    oracle中新建用户和赋予权限
    查看>>
    Oracle中的NVL,NVL2,NULLIF以及COALESCE函数使用
    查看>>
    Oracle中的rownum 和rowid的用法和区别
    查看>>
    oracle中的大小写、字符、dual、数字、处理、日期、函数、显/隐式、时间、条件表达式case、decode、to_date、to_char、sysdate
    查看>>
    oracle中表和视图的区别,oracle中常用表和视图
    查看>>
    oracle从备份归档日志的方法集中回收
    查看>>
    oracle优化器analyzed,Oracle 学习之 性能优化(十三) 索引
    查看>>
    Oracle修改字段类型
    查看>>
    oracle典型安装失败,安装oracle 10失败
    查看>>
    Oracle内存结构详解(四)--Oracle SGA其他组成部分
    查看>>
    Oracle分析函数之LEAD和LAG
    查看>>
    Oracle创建database link(dblink)和同义词(synonym)
    查看>>
    oracle创建数据库的步骤
    查看>>