实例:加法计算器
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模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓