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 ...
随机推荐
- this指针
this Note:不论是类中的构造函数,还是类中的普通成员函数,内部都隐含一个形参叫this指针,用于接收当前正在构造/调用对象的地址,因此不同的对象被构造/调用时,同一个函数的执行结果不同;对于一 ...
- Struct2
1.MVC思想概述 Servlet作为前端控制器,负责接收客户端发送的请求,在Servlet中只包含控制逻辑和简单的前端处理:然后调用后端javabean来完成实际的逻辑处理: 最后转发到相应的jsp ...
- HTTP 方法:GET 对比 POST
什么是 HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信. HTTP 的工作方式是客户机与服务器之间的请求-应答协议. web 浏览器可能是客户端,而计算机上的网络应用程 ...
- easyui datagrid 分页略解
easyui datagrid 本身自带了分页功能. 但是这个需要你自己控制. 在后台可以得到两个datagrid的参数,rows 和page.其中rows是每页要显示的个数,page是第几页.单纯的 ...
- 【MVC学习笔记01】初窥奥秘
前言 最近工作落实了,是我非常喜欢的无线前端,会接触很多新东西啦,需要努力才行.因为会用到backbone,所以要学习MVC啦. MVC(模型-视图-控制器),这种模式最早被用于构建桌面程序和服务器端 ...
- 高性能的JavaScript库---Lodash
上周在仿做Nodejs社区的时候,遇到了lodash这个javascript库,很惭愧,那也是我第一次听说lodash.人嘛,对于新鲜的事物总是会或多或少感到些好奇的,于是就毫不犹豫地去lodash官 ...
- HTML5拖拽实例
最近应该会用到,借用一下......小妹儿,你又变懒了 拖拽相关属性 draggable属性是html5的全局属性,是html5支持拖放操作的方式之一,用来表示元素是否可以被拖放,draggable有 ...
- 如何:对 SharePoint 列表项隐藏 ECB 中的菜单项
可以通过使用功能框架向编辑控制块 (ECB) 菜单添加新的自定义操作.但是,您不能使用此方法进行相反的操作,即隐藏现有的 ECB 菜单项,因为它们是通过使用 ECMAScript(JavaScript ...
- ArcGIS中国工具2.2正式发布
ArcGIS中国工具2.2新功能 1. 2.0全面支持ArcGIS10.3 2. 全面修改成插件,原来部分是独立运行的EXE 3. 可以制作倾斜的矩形图框 4. 修改宗地(地块)左上角为第一个点,填写 ...
- SharePoint 2013 配置基于AD的Form认证
前 言 配置SharePoint 2013基于AD的Form认证,主要有三步: 1. 修改管理中心的web.config: 2. 修改STS Application的web.config: 3. 修改 ...