C++面向对象的Qt编程

实例:加法计算器

Carculator.h文件

#ifndef __CARCULATOR_H_ 
#define __CARCULATOR_H_

#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit> 
#include <QDoubleValidator> //Double数字验证器
#include <QFont>
#include <QHBoxLayout>

//自定义窗口类
class Carculator:public QWidget{
    Q_OBJECT
public:
    Carculator(void);//构造函数声明
private:
    QLineEdit* m_x;//左操作数
    QLineEdit* m_y;//右操作数
    QLineEdit* m_z; //显示结果
    QLabel* m_label;//+标签
    QPushButton* m_button;//=按钮
    QHBoxLayout* m_layout;//水平布局器

public slots: //自定义槽函数标记
    void enableButton(void); //恢复按钮正常状态槽函数
    void carculator(void);  //计算和显示结果槽函数

};
#endif

Carculator.cpp文件

#include "Carculator.h"

Carculator::Carculator(void){  //构造函数
    //界面初始化
    setWindowTitle("加法计算器");  //设置标题
    QFont font;  //创建字体对象
    font.setPointSize(20);  //设置字体大小
    setFont(font);  //给父窗口设置字体

    m_x=new QLineEdit(this);
    m_x->setAlignment(Qt::AlignRight);//设置文本对齐方式
    m_x->setValidator(new QDoubleValidator(this));//设置验证器-只能输入double文本


    m_y=new QLineEdit(this);
    m_y->setAlignment(Qt::AlignRight);
    m_y->setValidator(new QDoubleValidator(this));

    m_z=new QLineEdit(this);
    m_z->setAlignment(Qt::AlignRight);
    m_z->setReadOnly(true);//设为用户只读

    m_label=new QLabel("+",this);
    m_button=new QPushButton("=",this);
    m_button->setEnabled(false);//设置是否可用
    //false  不可用

    m_layout=new QHBoxLayout(this);
    m_layout->addWidget(m_x);  //往布局控件中添加控件-按顺序
    m_layout->addWidget(m_label);
    m_layout->addWidget(m_y); 
    m_layout->addWidget(m_button); 
    m_layout->addWidget(m_z);
    setLayout(m_layout); //窗口添加布局控件

    //信号和槽的链接
    connect(m_x,SIGNAL(textChanged(QString)),this,SLOT(enableButton(void)));
    //槽函数是当前父窗口自定义的,所以接受者是this
    connect(m_y,SIGNAL(textChanged(QString)),this,SLOT(enableButton(void)));
    connect(m_button,SIGNAL(clicked(void)),this,SLOT(carculator(void)));

}
void Carculator::enableButton(void){  //恢复按钮正常状态槽函数
    bool bxok;//记录左操作数是否有效数据
    bool byok;//记录右操作数是否有效数据
    m_x->text().toDouble(&bxok);
    //m_x->text  返回文本
    //toDouble  把QString文本转换成double
    m_y->text().toDouble(&byok);
    m_button->setEnabled(bxok && byok);

}
void Carculator::carculator(void){    //计算和显示结果槽函数
    double res=m_x->text().toDouble()  + m_y->text().toDouble();
    QString str=QString::number(res);
    m_z->setText(str);  //设置显示文本

}

main.cpp文件

#include <QApplication>
#include "Carculator.h"

int main(int argc,char *argv[])
{
    QApplication app(argc,argv);  

    Carculator win;
    win.show();

    return app.exec();  
}

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值