实例五---绘图,计时器多线程,键盘响应
加法
直接在QT内开发
QString q1,q2,q3;
q1=ui->lineEdit_1->text();
q2=ui->lineEdit_2->text();
int n=q1.toInt()+q2.toInt();
q3=q3.sprintf("%d",n);
ui->lineEidt_3->settext(q3);
动画,绘图(QWidget)
随机产生5个点在屏幕上。
头文件:
#include <QPainter>
#include <cstdlib>
#include <ctime>
struct S
{
int x,y;
}
//在class Widget内添加private S[5]
private:
S ball[5];
void draw();
protected:
void paintEvent(QPaintEvent *event)
.cpp文件:
void Widget::paintEvent(QPaintEvent *event)
{
draw();
}
计时器,多线程(QWidget)
.h头文件
#include <QObject>//timer
#include <QDebug>//timer
#include <QTimerEvent>//timer
private:
int n;
int t;//timer
protected:
virtual void timerEvent(QTimerEvent* ev);//计时函数
窗口初始化函数和timeEvent()函数
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
n=0;
QString qs;
qs=qs.asprintf("%d",n);
ui->lineEdit->setText(qs);//设置初始0值
}
void Widget::timerEvent(QTimerEvent* ev)//timer
{
if(ev->timerId()==t)//ev->timeId()就是距离上个的时间差
{
++n;
QString qs;
qs=qs.asprintf("%d",n);
ui->lineEdit->setText(qs);
}
}
槽函数
void Widget::on_pushButton_clicked()
{
t=startTimer(1000);//开始计时和停止后继续计时
}
void Widget::on_pushButton_2_clicked()
{
this->killTimer(t);//停止计时
}
void Widget::on_pushButton_3_clicked()
{
n=0;
QString qs;
qs=qs.asprintf("%d",n);
ui->lineEdit->setText(qs);
}
键盘响应(键盘按钮使数字变化)
.h头文件
#include <QKeyEvent>
private:
int n;
protected:
virtual void keyPressEvent(QKeyEvent* ev);//接受按键,变化数字函数
.cpp文件
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
int n=0;
QString s;
s=s.sprintf("%d",n);
ui->lineEdit->setText(s);
}
void Widget::keyPressEvent(QKeyEvent* ev)//接受按键,变化数字函数
{
switch(ev->key())
{
case Qt::Key_Up:n=n-1;break;
case Qt::Key_Down:n=n+1;break;
}
if(n<0)
n=0;
QString qs;
qs=qs.asprintf("%d",n);
ui->lineEdit->setText(qs);
}