文章目录

  • 1 计算器初步添加消息响应

1 计算器初步添加消息响应

只需要按照信号与槽的要求进行修改即可,修改后的代码如下(main.cpp未修改):

QCalculatorUI.h:

#ifndef _QCALCULATORUI_H_
#define _QCALCULATORUI_H_#include <QWidget>
#include <QLineEdit>
#include <QPushButton>class QCalculatorUI : public QWidget
{Q_OBJECT
private:QLineEdit* m_edit;QPushButton* m_buttons[20];QCalculatorUI();bool construct();
private slots:void onButtonClicked();
public:static QCalculatorUI* NewInstance();void show();~QCalculatorUI();
};#endif

QCalculatorUI.cpp:

#include "QCalculatorUI.h"
#include <QDebug>QCalculatorUI::QCalculatorUI() : QWidget(NULL, Qt::WindowCloseButtonHint)
{}bool QCalculatorUI::construct()
{bool ret = true;const char* btnText[20] ={"7", "8", "9", "+", "(","4", "5", "6", "-", ")","1", "2", "3", "*", "<-","0", ".", "=", "/", "C",};m_edit = new QLineEdit(this);if( m_edit != NULL ){m_edit->move(10, 10);m_edit->resize(240, 30);m_edit->setReadOnly(true);m_edit->setAlignment(Qt::AlignRight);}else{ret = false;}for(int i=0; (i<4) && ret; i++){for(int j=0; (j<5) && ret; j++){m_buttons[i*5 + j] = new QPushButton(this);if( m_buttons[i*5 + j] != NULL ){m_buttons[i*5 + j]->resize(40, 40);m_buttons[i*5 + j]->move(10 + (10 + 40)*j, 50 + (10 + 40)*i);m_buttons[i*5 + j]->setText(btnText[i*5 + j]);connect(m_buttons[i*5 + j], SIGNAL(clicked()), this, SLOT(onButtonClicked()));}else{ret = false;}}}return ret;
}QCalculatorUI* QCalculatorUI::NewInstance()
{QCalculatorUI* ret = new QCalculatorUI();if( (ret == NULL) || !ret->construct() ){delete ret;ret = NULL;}return ret;
}void QCalculatorUI::show()
{QWidget::show();setFixedSize(width(), height());
}void QCalculatorUI::onButtonClicked()
{QPushButton* btn = (QPushButton*)sender();QString clickText = btn->text();if( clickText == "<-" ){QString text = m_edit->text();if( text.length() > 0 ){text.remove(text.length()-1, 1);m_edit->setText(text);}}else if( clickText == "C" ){m_edit->setText("");}else if( clickText == "=" ){}else{m_edit->setText(m_edit->text() + clickText);}
}QCalculatorUI::~QCalculatorUI()
{}

参考资料:

  1. QT实验分析教程

计算器初步添加消息响应相关推荐

  1. MFC中动态创建控件及添加消息响应的方法实例

    动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一般是对话框, ...

  2. MFC动态按钮的创建及其消息响应 和 自定义消息

    原文链接: http://www.cnblogs.com/gaohongchen01/p/4046525.html 动态按钮(多个)的创建: 1.在类中声明并定义按钮控件的ID #define IDC ...

  3. win32 控件的创建和消息响应

    win32 控件的创建和消息响应 1. 控件的创建 控件的创建和窗口创建是一样的,例如: //-------- 创建窗口或控件 ---- hwnd = CreateWindow("butto ...

  4. mfc加载icon图标自然并添加单击响应事件

    1. 给创建了的项目添加 picture conrol 控件 2. 控件的属性 type 设为 icon 3. 在属性 image 里面填上之前添加的 icon 图标的控件名 4. 这时我们可以看到图 ...

  5. 为duilib的MenuDemo增加消息响应,优化代码和显示效果

    转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/38253297 第一部分 我在前一段时间研究了怎么制作duilib的菜单, ...

  6. mfc---手动给toolbar按钮添加消息View中

    手动给toolbar按钮添加消息View中: .h: afx_msg void OnButtonBG(); .cpp: ON_COMMAND(ID_BUTTON_BG,OnButtonBG) .cpp ...

  7. 微信公众平台消息接口开发(29)校验签名与消息响应合并

    微信公众平台开发 微信公众平台开发者 微信公众平台开发模式 签名校验 消息响应 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/archive/2013/05/0 ...

  8. MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应...

    MFC小程序截图: 一.在MFC中简单使用WebBrowser的ActiveX插件的方法: 见博文:  http://blog.csdn.net/supermanking/article/detail ...

  9. java响应事件_Swing中添加事件响应的三种处理方式说明

    举例说明事件响应 在Swing中,事件响应是通过监听器对象来处理事件的方式实行的,这种方式被称为事件委托模型. 以JButton举例,它内部有一个名为listenerList的链表,在点击按钮时,会产 ...

最新文章

  1. Java中使用LUA脚本语言
  2. R语言CRAN不包含的安装包下载并手动使用RStudio进行安装实战:以下载VRPM包及绘制彩色列线图为例
  3. ICML 2020论文贡献榜排名出炉:Google单挑斯坦福、MIT、伯克利;清华进TOP 20
  4. SQL四种语言:DDL,DML,DCL,TCL
  5. 将给出的整数x翻转_每日一题:1.罗马数字转整数
  6. 2018/8/9 MultiU 6 并查集+dfs,反向建边提高查询效率 !!! / 最大字段和n维(降维)/ 状压+中途相遇法...
  7. 【Transformer】SOFT: Softmax-free Transformer with Linear Complexity
  8. Codevs 2800 送外卖(状压DP)
  9. ICCV7 For AVR 使用教程 Atmega16 单片机
  10. Mysql Spatial 索引
  11. python pyd_python pyd 加密相关
  12. 三种语句可以恢复Oracle数据库误删除数据
  13. ORAN C平面 Section Type 3
  14. 威联通使用Typecho搭建博客
  15. python输出计算结果_Python学习--02输入和输出、运算符
  16. GitLab持续集成持续部署(CICD)
  17. 总结 - 写在NOIP2016之后
  18. 网络验证码防破解辅助工具
  19. 关于论文排版的一些记录
  20. 思科CCNA第一学期第八章答案

热门文章

  1. 【控制】二阶 UGV 的 时间-输入 指标性能最优解算
  2. 2.10 m 个样本的梯度下降-深度学习-Stanford吴恩达教授
  3. Ardino基础教程 6_抢答器
  4. Ardino基础教程 5_按键控制
  5. 【强化学习】Actor-Critic
  6. Vivado篇(一)Notepad++编写的Verilog文件导入Vivado,中文注释乱码问题
  7. 【AES图像加解密】基于AES图像加解密算法的MATLAB仿真
  8. ubuntu命令创建用户无法登入问题
  9. docker in all
  10. java框架之Spring 核心框架体系结构