【QT】实例五---绘图,计时器多线程,键盘响应

实例五---绘图,计时器多线程,键盘响应

加法

直接在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个点在屏幕上。
【QT】实例五---绘图,计时器多线程,键盘响应

头文件:
【QT】实例五---绘图,计时器多线程,键盘响应

#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文件:
【QT】实例五---绘图,计时器多线程,键盘响应

void Widget::paintEvent(QPaintEvent *event)
{
    draw();
}

【QT】实例五---绘图,计时器多线程,键盘响应

计时器,多线程(QWidget)

.h头文件

【QT】实例五---绘图,计时器多线程,键盘响应

#include <QObject>//timer
#include <QDebug>//timer
#include <QTimerEvent>//timer

private:
    int n;
    int t;//timer
protected:
    virtual void timerEvent(QTimerEvent* ev);//计时函数

【QT】实例五---绘图,计时器多线程,键盘响应

窗口初始化函数和timeEvent()函数

【QT】实例五---绘图,计时器多线程,键盘响应

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);
}

【QT】实例五---绘图,计时器多线程,键盘响应

键盘响应(键盘按钮使数字变化)

.h头文件

#include <QKeyEvent>

private:
    int n;
protected:
    virtual void keyPressEvent(QKeyEvent* ev);//接受按键,变化数字函数

【QT】实例五---绘图,计时器多线程,键盘响应

.cpp文件

【QT】实例五---绘图,计时器多线程,键盘响应

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);
}
上一篇:Qt实现圆角窗口


下一篇:pyqt5实战之简陋的计算器