Qt—学习之我的计算器
来源:互联网 发布:urllib.request json 编辑:程序博客网 时间:2024/05/17 21:53
对于Qt的学习我以为应该以应用实例为主体,不断地扩充自己的Qt知识,在实践中不断地学习;
编程环境:
系统:win7 32位
软件:vs2013 + Qt5.8.0
首先要干的是通过Designer,画出视图来主要是两部分文本编辑框(QText)和按键(QPushButton);
然后编写相关代码;
完成这个小应用,加深了对Qt中Style Sheets的了解,可以通过setStyleSheet(…)是我们要设计的Widget更加的美观;
例如:
setStyleSheet("QTextEdit{background-color: rgb(255, 255, 255);font-family:'Microsoft YaHei';font-size:35px;font-weight:bold;}");
设置QTextEdit中的白色背景色,字体微软雅黑,字体大小35个像素,加粗;
QButtonGroup 是一个按键组,当我们需要用到多个功能相似的按键时,使用该类将会大大地减少我们的工作量;
是吃Qt这碗饭的,但是刚接触4个月需要学习的还有很多啊;加油~~~
相关代码如下:
myCalc.h
#ifndef MYCALC_H#define MYCALC_H#include <QtWidgets/QDialog>#include "ui_mycalc.h"#include <QButtonGroup>#include <QDebug>#include <QStringList> class myCalc : public QDialog{ Q_OBJECTpublic: myCalc(QWidget *parent = 0); ~myCalc(); QString calculate(int id);public slots: void onDigitGroupClicked(int id); void onFunctionGroupClicked(int id); void onResultGroupClicked(int id);private: Ui::myCalcClass *ui; QButtonGroup *digitGroup; QButtonGroup *functionGroup; QButtonGroup *resultGroup; QString m_expression; QString m_curValue; int m_operatorId;};#endif // MYCALC_H
myCalc.cpp
#include "mycalc.h"myCalc::myCalc(QWidget *parent) : QDialog(parent) , ui(new Ui::myCalcClass) , m_expression("0") , m_curValue("0") , m_operatorId(0){ ui->setupUi(this); digitGroup = new QButtonGroup; functionGroup = new QButtonGroup; resultGroup = new QButtonGroup; digitGroup->addButton(ui->pushButton_0, 0); digitGroup->addButton(ui->pushButton_1, 1); digitGroup->addButton(ui->pushButton_2, 2); digitGroup->addButton(ui->pushButton_3, 3); digitGroup->addButton(ui->pushButton_4, 4); digitGroup->addButton(ui->pushButton_5, 5); digitGroup->addButton(ui->pushButton_6, 6); digitGroup->addButton(ui->pushButton_7, 7); digitGroup->addButton(ui->pushButton_8, 8); digitGroup->addButton(ui->pushButton_9, 9); digitGroup->addButton(ui->pushButton_10, 10); functionGroup->addButton(ui->pushButton_plus, 21); functionGroup->addButton(ui->pushButton_sub, 22); functionGroup->addButton(ui->pushButton_mult, 23); functionGroup->addButton(ui->pushButton_excpt, 24); resultGroup->addButton(ui->pushButton_equal, 31); resultGroup->addButton(ui->pushButton_reciprocial, 32); resultGroup->addButton(ui->pushButton_back, 33); resultGroup->addButton(ui->pushButton_zero, 34); resultGroup->addButton(ui->pushButton_percent, 35); resultGroup->addButton(ui->pushButton_PlusAndSub, 36); connect(digitGroup, SIGNAL(buttonClicked(int)), this, SLOT(onDigitGroupClicked(int))); connect(functionGroup, SIGNAL(buttonClicked(int)), this, SLOT(onFunctionGroupClicked(int))); connect(resultGroup, SIGNAL(buttonClicked(int)), this, SLOT(onResultGroupClicked(int))); ui->textEdit->setReadOnly(true); setStyleSheet("QTextEdit{background-color: rgb(255, 255, 255);font-family:'Microsoft YaHei';font-size:35px;font-weight:bold;}"); ui->textEdit->setText(m_expression + "\r\n" + m_curValue);}myCalc::~myCalc(){}#define COMMON_STYLE_SHEET "background-color: rgb(239,246,255);color: rgb(0, 0, 0);border-width: 1px; font-family:'Microsoft YaHei';font-size:15px;"void myCalc::onDigitGroupClicked(int id){ if (m_curValue == "0" || m_expression == "0") { m_curValue.clear(); m_expression.clear(); } if (id >= 0 && id <= 10) { m_curValue += digitGroup->button(id)->text(); m_expression += digitGroup->button(id)->text(); } qDebug() << "onDigitGroupClicked success" << m_expression; ui->textEdit->setText(m_expression + "\r\n" + m_curValue);}void myCalc::onFunctionGroupClicked(int id){ m_expression += functionGroup->button(id)->text(); ui->textEdit->setText(m_expression + "\r\n" + m_curValue); m_operatorId = id; m_curValue.clear();}void myCalc::onResultGroupClicked(int id){ QString result; switch (id) { case 31: result = calculate(id); m_expression = result; m_curValue = result; break; case 32: if (m_curValue == 0) { result = QString(tr("ERROR")); break; } result = QString("%1").arg(1 / m_curValue.toFloat()); m_expression = result; m_curValue = result; break; case 33: m_curValue.chop(1); m_expression.chop(1); if (m_curValue.isEmpty()) m_curValue = "0"; ui->textEdit->setText(m_expression + "\r\n" + m_curValue); return; case 34: m_curValue = "0"; m_expression.clear(); ui->textEdit->setText("\r\n" + m_curValue); return; case 35: result = "0"; m_expression = "0"; m_curValue = "0"; break; case 36: result = QString("%1").arg(0 - m_curValue.toFloat()); m_expression = result; m_curValue = result; break; default: break; } ui->textEdit->setText("\r\n" + result); qDebug() << m_expression; m_operatorId = 0;}QString myCalc::calculate(int id){ if (m_operatorId == 0) return m_expression; QString operatorSymbol = functionGroup->button(m_operatorId)->text(); QStringList str = m_expression.split(operatorSymbol); float frist = str.at(0).toFloat(); float scend = str.at(1).toFloat(); qDebug() << frist << " " << operatorSymbol << " " << scend; float result; switch (m_operatorId) { case 21: result = frist + scend; break; case 22: result = frist - scend; break; case 23: result = frist * scend; break; case 24: if (scend == 0) return QString("ERROR"); result = frist / scend; break; default: break; } return QString("%1").arg(result);}
阅读全文
0 0
- Qt—学习之我的计算器
- QT学习 之 计算器的实现
- 我的QT入门——QT版简单计算器
- 学习Qt之简单计算器
- QT学习之路之计算器开发
- 我的Qt学习之路——配置Qt环境及Qt程序打包
- 我的Qt学习之路——Hello,world!
- 我的Qt学习之路——标准对话框
- 我的Qt学习之路——按钮特效
- 我的qt学习之路
- 【Qt学习之路】我的Qt历程
- 嵌入式开发之Qt学习篇——2、Qt实战:仿Windows 8 计算器
- Qt之简易计算器
- QT 应用程序之计算器
- 我的博客第一发--qt实现科学计算器
- Qt学习之路十一(一个简易计算器)
- Qt编写的计算器
- 基于Qt的计算器
- 批处理文件
- 面试常考排序
- 【C/C++】素数对猜想
- 牛顿迭代法
- P标签为什么不能嵌套块级标签
- Qt—学习之我的计算器
- java并发编程day07
- Python爬虫学习笔记Day2
- kafka随笔记
- [Offer收割]编程练习赛27:题目2 : 两个机器人
- Http协议之Get和Post的区别
- 09-javascript 函数定义和调用
- Hive之 hive与hadoop的联系
- Mysql B+树学习