QT学习第2天
#ifndef __CALCULATORDIALOG_H #define __CALCULATORDIALOG_H #include <QDialog> #include <QLabel> #include <QPushButton> #include <QLineEdit> //输入文本的组件 #include <QDoubleValidator> //双精度的校验器 #include <QHBoxLayout> //水平布局器 class CalculatorDialog:public QDialog{ //MOC编译器,把不符合标准的语法变成标准的C++语法 Q_OBJECT public: CalculatorDialog(void); private: QLineEdit *m_editX; //左操作数 QLineEdit *m_editY; //右操作数 QPushButton *m_btnCalc; //等号按钮 QLineEdit *m_editZ; //保存结果,只读属性 private slots: void enableCalcButton(void); //使能等号按钮 void calcClicked(void); //计算结果 }; #endif // __CALCULATORDIALOG_H
CalculatorDialog.h
#include "CalculatorDialog.h" //构造函数中初始化UI界面 CalculatorDialog::CalculatorDialog(void){ //设置对话框的标题 (继承过来的成员函数) setWindowTitle("加法计算器"); m_editX = new QLineEdit(this); //设置文本右对齐 m_editX->setAlignment(Qt::AlignRight); //设置验证器,只能输入数字 m_editX->setValidator(new QDoubleValidator(this)); m_editY = new QLineEdit(this); //设置文本右对齐 m_editY->setAlignment(Qt::AlignRight); //设置验证器,只能输入数字 m_editY->setValidator(new QDoubleValidator(this)); m_editZ = new QLineEdit(this); m_editZ->setAlignment(Qt::AlignRight); //设置右对齐 m_editZ->setReadOnly(true); //设置只读 m_btnCalc = new QPushButton("=",this); m_btnCalc->setEnabled(false);//设置禁用 //使用水平布局器,自动调整每个组件的大小和位置 QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(m_editX); layout->addWidget(new QLabel("+")); layout->addWidget(m_editY); layout->addWidget(m_btnCalc); layout->addWidget(m_editZ); //设置布局器 setLayout(layout); //编辑框内容改变时发出信号,尝试使能等号按钮 connect(m_editX,SIGNAL(textChanged(const QString &)),this,SLOT(enableCalcButton())); connect(m_editY,SIGNAL(textChanged(const QString &)),this,SLOT(enableCalcButton())); //点击等号按钮,计算结果并显示 connect(m_btnCalc,SIGNAL(clicked()),this,SLOT(calcClicked())); } void CalculatorDialog::enableCalcButton(void){ bool bXOk; bool bYOk; //获取左右操作数的数据(QString),转换成浮点数 m_editX->text().toDouble(&bXOk); m_editY->text().toDouble(&bYOk); //如果左右操作数都是有效的数字,使能等号按钮 if(bXOk && bYOk){ m_btnCalc->setEnabled(true); } else{ m_btnCalc->setEnabled(false); } } void CalculatorDialog::calcClicked(void){ //计算结果 double res = m_editX->text().toDouble() + m_editY->text().toDouble(); //将结果转换成字符串 QString str = QString::number(res,); //显示结果到m_editZ m_editZ->setText(str); }
CalculatorDialog.cpp
#include "CalculatorDialog.h" #include <QApplication> int main(int argc, char **argv){ QApplication app(argc,argv); CalculatorDialog dialog; dialog.show(); return app.exec(); }
Calculator.cpp
QT学习第2天的更多相关文章
- QT学习第1天
QT学习第一天 坚持住!! 一 Qt概述 1.Qt发展历史 (1)1991年诞生(Haavard Nord/Eirik Chambe-Eng), (2)1994年创立Troll Tech(奇趣科技) ...
- 【转载】分享一些Qt学习资源,欢迎下载
资源来源:http://bbs.csdn.net/topics/390358737 经过我一翻整理,把一些我收集到的Qt学习资源分享给大家,主要适合新手,老鸟可以直接忽略我.要说明一下,很多资源都是在 ...
- QT学习之路--创建一个对话框
Q_OBJECT:这是一个宏,凡是定义信号槽的类都必须声明这个宏. 函数tr()全名是QObject::tr(),被他处理过的字符串可以使用工具提取出来翻译成其他语言,也就是做国际化使用. 对于QT学 ...
- 转载: Qt 学习之路 2归档
Qt 学习之路 2归档 http://www.devbean.net/2012/08/qt-study-road-2-catelog/
- Qt 学习资料
Qter开源社区http://www.qter.org/ [Qt教程], 作者yafeilinux [视频] QT学习之路:从入门到精通 <C++ Qt 编程视频教程>
- qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果
应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...
- Qt学习博客推荐
附录C Qt资源 C.1 Qt 官方资源 全 球各大公司以及独立开发人员每天都在加入 Qt 的开发社区.他们已经认识到了Qt 的架构本身便可加快应用程序开发进度.这些开发人员,无论是想开发单平台软件. ...
- qt学习教程1.qt开发环境搭建
qt学习教程1.qt开发环境搭建 首先下载qt 下载地址:http://download.qt.io/archive/qt/ 此教程使用的版本为5.1.1 下载好后,打开安装包,然后点下一步 选择一个 ...
- QT学习教程
原地址:http://www.devbean.NET/2012/08/qt-study-road-2-catelog/ 网上看到的不错的教程 本教程以qt5为主,部分地方会涉及qt4.据说非常适合qt ...
- Qt学习之路
Qt学习之路_14(简易音乐播放器) Qt学习之路_13(简易俄罗斯方块) Qt学习之路_12(简易数据管理系统) Qt学习之路_11(简易多文档编辑器) Qt学习之路_10(Qt ...
随机推荐
- 【转】nginx优化 突破十万并发
一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计 ...
- 开源日志记录工具log4j
前言:当我们进行大的项目书写的时候或者我们选择维护程序的时候,想知道几点几时我们录入的数据有bug是那么我们就采用--------------------------->log4j记录日志的信息 ...
- Context.js 右键菜单
ContextJS is a lightweight solution for contextual menus. Currently, there are two versions. The fir ...
- 如何在window Form中使用Font Awesome?
随着技术的发展,web上以前的图片按钮现在逐步换成了图标字体,这些图标字体是矢量的,矢量图意味着每个图标都能在所有大小的屏幕上完美呈现,可以随时更改大小和颜色,而且不失真,真心给人一种“高大上”的感觉 ...
- MaterialUp - 寻找材料设计灵感必备的网站
MaterialUp 是一个展示最好的材料设计 APP,网站和概念的地方,每天都会更新.每款设计都精心挑选,展示那些有才华的设计师的伟大工作. MaterialUp 的核心价值是让尽可能多的设计师提供 ...
- go语言 类型:布尔类型
Go语言中的布尔类型与其他语言基本一致,关键字也为bool,可赋值为预定义的true和false示例代码如下: var v1 bool v1 = true v2 := (1 == 2) // v2也会 ...
- go语言 类型:基础类型和复合类型
Go 语言中包括以下内置基础类型:布尔型:bool整型:int int64 int32 int16 int8 uint8(byte) uint16 uint32 uint64 uint浮点型:floa ...
- windows Python 3.4.3 安装图文
1.去官网(https://www.python.org/downloads/)下载软件. 2.运行安装程序: 下一步 next. 下一步 next 全部选中,下一步 next. 安装中..来自:ht ...
- JavaScript强化教程——JavaScript 总结
本教程中我们向您讲授了如何向 html 页面添加 JavaScript,使得网站的动态性和交互性更强. 你已经学习了如何创建对事件的响应,验证表单,以及如何根据不同的情况运行不同的脚本. 你也学到了如 ...
- Web安全攻防-----TCP/IP安全篇
知识点: 掌握TCP/IP的体系分层结构 掌握TCP/IP的各一层功能特点 掌握TCP/IP的数据在各层的名称 掌握TCP/IP的体系数据的封装和解封装 1.TCP/IP协议的历史 TCP/IP的起源 ...