Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,Qt很容易扩展,并且允许真正地组件编程。2008年,Qt Company科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP,它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西。

优势

跨平台特性

Qt支持下述平台: MS/Windows - 95、98、NT4.0、ME、2000、XP 、 Vista、Win7、win8、win2008、win10 Unix/X11 -Linux、SunSolaris、HP-UX、CompaqTru64 UNIX、IBMAIX、SGI IRIX、FreeBSD、BSD/OS和其它很多X11平台 Macintosh -Mac OS X Embedded - 有帧缓冲(framebuffer)支持的嵌入式Linux平台,Windows CE、Symbian、Symbian^3、Symbian Anna、Symbian Belle、MeeGo、haiku-os。

成功案例

  1. Linux 桌面环境 KDE
  2. WPS Office 办公软件
  3. Skype 网络电话
  4. Google Earth 谷歌地图
  5. VLC 多媒体播放器
  6. VirtualBox 虚拟机

1.下载QT

第一步下载qt,网盘如下:

链接:https://pan.baidu.com/s/1DyaAD0v8nG2rSKbawCM-gw 
提取码:0503         --来自百度网盘超级会员V5的分享

2.安装QT

Qt 占用的存储空间很大,安装之前建议先准备好 8GB 以上的磁盘空间。对于目前 Qt 最新版开发环境,如果不安装源代码包,实际占用大约 5.5GB;如果选择安装源码包,大约占用 7.5GB。
双击下载得到的 qt-opensource-windows-x86-5.9.0.exe 即可开始安装。Qt 的安装过程和普通的 Windows 软件一样,按照向导进行操作即可。
注意过程中需要注意注册邮箱,要进去点邮件操作。

3.QT的使用

代码区和绘制UI区:

代码区

PS:

C++和Qt

1.向右:将要移动的代码选中,然后按Tab键
2.向左:将要移动的代码选中,然后按Shift+Tab键

绘制UI区

4.代码

mainwindow.h部分:

//mainwindow.h#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QLabel>
#include <QPushButton>namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;QString operand1;QString operand2;QChar op;public slots:void calcResult(QChar c){QLabel* lbl = this->findChild<QLabel*>("lbl", 0); //0表示在直接孩子中查找,1表示递归(默认)if((c >= '0' && c <= '9') || c == '.'){if(op == ' '){operand1.push_back(c);}else{operand2.push_back(c);}}else if(c == '+' || c == '-' || c == '*' || c == '/'){op = c;}lbl->setText(operand1 + op + operand2);if(c == '='){double rs = 0;double a = operand1.toDouble();double b = operand2.toDouble();switch(op.toLatin1()){case '+':rs = a + b;break;case '-':rs = a - b;break;case '*':rs = a * b;break;case '/':rs = a / b;break;}//qDebug() << rs;QString qResult = QString::number(rs);//QRegExp rx("(\\.)0+$");//lbl->setText(qResult.replace(rx, ""));lbl->setText(operand1 + op + operand2 + "=" + qResult);operand1.clear();operand2.clear();op = ' ';}}
private slots:void on_pushButton_clicked();
};class MyButton : public QPushButton {Q_OBJECTpublic:MyButton(){connect(this, SIGNAL(clicked()), this, SLOT(onclick()));}private:
signals:void onClick2(const QChar s);private slots:void onclick(){emit onClick2(this->text().at(0));}
};#endif // MAINWINDOW_H

mainwindow.cpp部分

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"
#include "QLabel"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);this->op = ' ';this->resize(340, 340);QLabel* lbl = new QLabel;lbl->setText("");lbl->setObjectName("lbl");lbl->setParent(this);lbl->setStyleSheet("QLabel{background:black;color:#fff;padding:5px;font:bold 20px arial}");lbl->resize(240, 30);lbl->move(50, 50);lbl->show();QString symbols[] = {"1", "2", "3", "+","4", "5", "6", "-","7", "8", "9", "*","0", ".", "=", "/"};int offsetX = 50, offsetY = 100;for(int i = 0; i<4;i++){for(int j = 0;j<4;j++){MyButton* btn = new MyButton;connect(btn, SIGNAL(onClick2(QChar)), this, SLOT(calcResult(QChar)));btn->move(offsetX + 60*j, offsetY + 50*i);btn->resize(60, 30);btn->setText(symbols[i*4+j]);btn->setParent(this);btn->show();}}}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{QLabel* lp = this->findChild<QLabel*>("lblScreen",Qt::FindChildOption::FindChildrenRecursively);if(lp == nullptr){return;}lp->setText("");
}

5.最终结果

QT学习之搭建计算器相关推荐

  1. C++ Qt学习笔记 (1) 简易计算器设计

    最近开始学习c++ qt, 按照教材上的例程设计一个简易的桌面计算器: Qt是一个基于C++语言的跨平台应用程序和UI开发框架,主要包含一个类库,和跨平台开发及国际化的工具,最初由挪威的Trollte ...

  2. QT学习日志(附:简易计算器,qq登录界面,简易绘图板,植物大战僵尸魔改版项目实践)

    目录 写在前面 实训前一天 头文件无法生成 项目栏不见了 不知道如何发布程序 实训第一天(附简易计算器的实现) 自定义命名空间的相关问题 关于隐式调用构造函数的问题 实训第二天(不附地址薄的实现) 关 ...

  3. QT入门项目--简易计算器

    QT入门项目–简易计算器 目录 QT入门项目--简易计算器 一.前言 二.运行界面 三.代码 dialog.cpp doexpr.cpp check.cpp 四.总结 一.前言 C语言快要结课了,自然 ...

  4. QT学习:使用JSON/XML等非ts文件实现多语言国际化

    注意:如果不是CSDN网站显示本篇文章,请于底部点击"阅读原文"来阅读本篇文章! QT学习:使用JSON/XML等非ts文件实现多语言国际化 解析Json 重载translate ...

  5. qt工程在linux系统里颜色显示错误_【飞凌嵌入式RK3399开发板试用体验】+QT开发环境搭建测试(二)...

    作者:飞扬的青春 在拿到开发板之后,已经体验了Android操作系统,接下来就是体验Linux下的开发,本次以QT的一个小案例来测试下. 首先是自己先搭建了一个Ubuntu18.04的虚拟机,使用真机 ...

  6. Spring+SpringMVC+MyBatis深入学习及搭建(十)——MyBatis逆向工程

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6973266.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(九)--My ...

  7. Spring+SpringMVC+MyBatis深入学习及搭建(十一)——SpringMVC架构

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6985816.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十)--My ...

  8. Qt学习笔记,Qt国际化

    Qt学习笔记,Qt国际化 Qt国际化步骤: 第一步:设置.pro文件,加入TRANSLATIONS为国际化做准备 TRANSLATIONS = language/language_en.ts\     ...

  9. Qt学习笔记,Qt程序架构设计要旨

    Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...

最新文章

  1. IBS illustrator for the presentation and visualization of biological sequences 中山大学
  2. Redhat7开机图形或文字界面
  3. 单链表的操作_二分查找
  4. Linux下添加DB2用户
  5. Java NIO学习系列六:Java中的IO模型
  6. 德州职业技术学院计算机系,德州职业技术学院计算机系元旦晚会相声视频
  7. C++ 多重继承之内存存储
  8. windows中使用scrapyd遇到的问题
  9. 字符串处理 —— 回文串相关 —— Manacher 算法
  10. android capitalize,How to capitalize every letter in an Android EditText?
  11. DriverMessageBean配置详解
  12. 38 NoSQL-memcached
  13. L3-011 直捣黄龙 (30 分)-PAT 团体程序设计天梯赛 GPLT
  14. Python:Lasso方法、GM预测模型、神经网络预测模型之财政收入影响因素分析及预测...
  15. WindowsServer2008R2系统版本升级
  16. sql格式化工具-SQL Pretty Printer
  17. 2G到5G系统的横向比较(1)多址方式与调制方式
  18. xcode 找不到头文件
  19. 在ubuntu中安装DroidCam 让Andorid 安卓手机摄像头成为Linux外部可移动摄像头
  20. Android手机型号及产品名

热门文章

  1. Win10电脑创建本地网站
  2. 明日开幕|第四届OpenI/O启智开发者大会
  3. PROTEL99画异形焊盘
  4. python 各种开源库
  5. dplayer解析源码php调用,从demo分析ijk源码一:视频播放
  6. 金融科技专业计算机课程,课程大纲-1819S1-互联网金融科技
  7. 前苏联科技那么强大,俄罗斯的芯片产业为什么也没有发展起来?
  8. MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)
  9. 报告论文:汽车GPS调度系统车载终端设计技术方案
  10. 对上海市麦当劳、KFC门店分布进行空间分析