一、前言
Qt提供了自己的设计方式,在Qtcreator的设计界面,通过pushbotton按钮的组合,可以轻松制作出可供使用的客户端,本文通过实现计算器功能来详细理解信号槽与数据类型转换。
二、项目的具体实现
1.创建项目-设计雏形
创建widget项目,勾选Generrate form创建.ui文件,打开,ui文件进入设计界面,拖拽pushbotton和lineedit规划大致计算器布局,同时修改各个button的objectname为常用。
2.槽的设计
Qtcreator可以通过设计界面右键button后的“转到槽”进行自动连接,也可通过手动连接,手动连接需要在头文件中写入slots。
private slots:
void on_btn_1_clicked();
void on_btn_2_clicked();
void on_btn_3_clicked();
void on_btn_4_clicked();
void on_btn_5_clicked();
void on_btn_6_clicked();
void on_btn_7_clicked();
void on_btn_8_clicked();
void on_btn_9_clicked();
void on_btn_0_clicked();
void on_btn_add_clicked();
void on_btn_sub_clicked();
void on_btn_mul_clicked();
void on_btn_div_clicked();
void on_btn_equ_clicked();
并在实现界面进行函数功能的编写,即可完成槽信号的连接
void compute::on_btn_1_clicked()
{
}
3.运算逻辑的编写和数据类型的转换
计算器的功能需要在点击数字或符号的同时进行存储,直接通过int型数据会使十位百位难以描述,因此通过字符串类型进行存储数据,再将其转为int型方便编写和计算。
定义QString a和QStringList b,a用来进行单个数字的记录,b用来记录全部数字和符号
将数字按钮功能编写为a+="数字",以及使用setText()进行输出框的显示
void compute::on_btn_1_clicked()
{
a+="1";
ui->line_out->setText(a);
}
计算符号功能的编写:当点击计算符号时,利用b串记录已有的a值和符号,同时清空a。
void compute::on_btn_add_clicked()
{
b.insert(0,a);
a.clear();
b.insert(1,"+");
ui->line_out->setText(a);
}
等号功能的编写:当点击等号时,先对b中内容进行判断,当b中已经存在两个数据(第一个数和符号)时将第二个数据存入b,并通过判断b中符号进行相应的计算,否则就将ab清空。
if(b.count()==2)
{
b.insert(2,a);
if(b.at(1)=="+")
{
int v3 = QString(b.at(0)).toInt()+QString(b.at(2)).toInt();
ui->line_out->setText(QString::number(v3));
}
}
else
{
a.clear();
b.clear();
ui->line_out->setText(a);
}
注:ab中数据都是字符型,需要进行toInt的转换