我在进行Qt学习的一周中的部分作业整理:
1.简易计算器
页面设计图如下:
只用两种控件实现简易的整数加减乘除计算,QLabel和QPushButton,当按键被鼠标点击时将对应的数据显示在QLabel中,当点击运算符号按键时显示相应运算符号,再次点击数字按键时在第二个数据显示的QLabel中显示数据,点击“=”号时完成运算将答案显示在相应位置。
关键点是捕获运算符号的点击,未点击时,点击数字按键时需要将原本的数据*10再加点击的数字;点击运算符号后再次点击数字按键时将数据显示在第二个数据框。最后按“=”后根据捕获的运算符和数据进行运算。
完成图如下:
2.写一程序,用来查询字符串中字符出现的个数。
关键点是获取字符串中每一个字符,与指定字符进行对比。涉及到对字符串的操作。我用到的代码是:
QString y = x.mid(n, 1);
采用for循环,将n从0开始知道字符串结束的每一个字符与指定字符对比,遇到相同时将计数+1。
运行效果:
3.正则表达式和显示时间的实现
正则表达式可以对输入的内容加以限制,比如密码只能由数字和字符组成长度在8到16之间,这类的限制,也可以判断输入的内容是否符合要求、获取字符串中指定的类型等等。
以下是正则表达式中常用符号的基本用法:
例如表达式:"^【A-Za-z0-9】+$"指:所有大小写字母和数字组成的字符串,位数不限。(符号要改为英文符号,这里我写一对中括号时会变成注释QAQ第一次写不知道怎么改,只能用中文符代替)
时间的显示则需要获取系统时间以及设置定时器来实现每隔指定时间来刷新时间的显示。
这些涉及到QDate TIme类以及QTimer类,QDate Time类可以获取系统时间,代码如下:
QTime time_now = QTime::currentTime();
ui->label_time->setText((QDate::currentDate().toString(tr(“yyyy年MM月dd日 dddd”)))+time_now.toString());
QTimer则用来新建一个定时器来刷新当前时间的显示。代码如下:
QTimer *time_clock=new QTimer(parent);
connect(time_clock,SIGNAL(timeout()),this.SOLT(slottimedone()));
time_clock->start(1000);//每一秒启动一次
Qt中很重要的一环是信号与槽机制的连接,代码如下:
connect(Object1,SIGNAL(signal1),this,SLOT(slot1));
如果没有建立连接,那么代码运行时接收到信号也没办法实现写好的功能。