9.2作业

画图板

.h

#ifndef MYWND_H
#define MYWND_H

#include <QWidget>
#include <QMouseEvent>
#include <QPainter>
#include <QPaintEvent>
#include <QPen>
#include <QColor>
#include <QPushButton>
#include <QColorDialog>

class MyWnd : public QWidget
{
    Q_OBJECT

public:
    MyWnd(QWidget *parent = nullptr);
    ~MyWnd();

    void mousePressEvent(QMouseEvent *e);   //鼠标按下事件
    void mouseMoveEvent(QMouseEvent *e);    //鼠标移动事件
    void paintEvent(QPaintEvent *);         //绘制事件

private:
    QPixmap *MyPix;     //定义绘制类的指针
    QPoint startPoint;  //画笔的起始位置
    QPen *pen;
    QPushButton *btn1;
    QPushButton *btn2;
};
#endif // MYWND_H

.cpp

#include "mywnd.h"

MyWnd::MyWnd(QWidget *parent)
    : QWidget(parent)
{
    //设置画板尺寸
    this->setFixedSize(1024,800);

    MyPix = new QPixmap(1024,750);  //将自定义的绘制板大小设置为画板大小

    MyPix->fill(Qt::white);     //将自定义绘制板填充为白色

    btn1 = new  QPushButton();
    btn1->setParent(this);
    btn1->resize(100,40);
    btn1->move(410,755);
    btn1->setText("颜色");
    btn2 = new  QPushButton();
    btn2->setParent(this);
    btn2->resize(100,40);
    btn2->move(514,755);
    btn2->setText("清空");

    pen = new QPen();
    pen->setWidth(10);

    connect(btn1, &QPushButton::clicked, [&]()
    {
        QColor color = QColorDialog::getColor(Qt::black, this);
        pen->setColor(color);

    });

    connect(btn2, &QPushButton::clicked, [&](){
        MyPix->fill(Qt::white);
        update();

    });
}

MyWnd::~MyWnd()
{
}

void MyWnd::mousePressEvent(QMouseEvent *e)
{
    startPoint = e->pos();

}

void MyWnd::mouseMoveEvent(QMouseEvent *e)
{
    //申请一个画家类
    QPainter painter(MyPix);    //依附于自定义的绘制板

    painter.setPen(*pen);    //将画笔给画家

    //开始画线
    painter.drawLine(startPoint, e->pos());

    //将当前点设为新的起点
    startPoint =e->pos();

    //实时更新
    update();

}

void MyWnd::paintEvent(QPaintEvent *)
{
    //请一个画家,依附于this画图板
    QPainter painter(this);

    //将自定义的绘制板,画到画图板上
    painter.drawPixmap(0,0,*MyPix);

}

闹钟

.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QLineEdit>
#include <QLCDNumber>
#include <QPushButton>
#include <QTimer>
#include <QTime>
#include <QTextToSpeech>
#include <QPaintEvent>
#include <QPainter>
#include <QMessageBox>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    void paintEvent(QPaintEvent *event);

private:
    QLineEdit eventText;
    QLineEdit settTtime;
    QLCDNumber clock;
    QPushButton startBtn;
    QPushButton stopBtn;
    QTimer *time;
    bool flag = true;
    QTextToSpeech speech;
};
#endif // WIDGET_H

.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    this->setFixedSize(720,240);
    this->setWindowTitle("闹钟");

    clock.setParent(this);
    eventText.setParent(this);
    settTtime.setParent(this);
    startBtn.setParent(this);
    stopBtn.setParent(this);
    time = new QTimer(this);

    clock.display("00:00") ;

    clock.move(9,10);
    clock.resize(450,150);

    settTtime.resize(230,70);
    settTtime.move(475,10);
    settTtime.setFont(QFont("黑体", 40));
    settTtime.setAlignment(Qt::AlignHCenter);

    eventText.resize(700,60);
    eventText.move(10,170);
    eventText.setFont(QFont("黑体", 16));

    startBtn.setText("START");
    startBtn.resize(110,50);
    startBtn.move(475,100);
    startBtn.setFont(QFont("黑体", 20));
//    startBtn.setFlat(true);

    stopBtn.setText("STOP");
    stopBtn.resize(110,50);
    stopBtn.move(595,100);
    stopBtn.setFont(QFont("黑体", 20));
//    stopBtn.setFlat(true);

    connect(&startBtn, &QPushButton::clicked, [&]()
    {
        time->start(1000);
        settTtime.setEnabled(false);
        eventText.setEnabled(false);
    });

    connect(&stopBtn, &QPushButton::clicked, [&]()
    {
        time->stop();
        eventText.setEnabled(true);
        settTtime.setEnabled(true);
    });

    connect(time, &QTimer::timeout, [&]()
    {

        QTime sysTime = QTime::currentTime();

        QString timeText = sysTime.toString("hh:ss");

        if(settTtime.text() == timeText)
        {
            speech.say(eventText.text());
            QMessageBox::StandardButton btn =
            QMessageBox::information(
            this, "闹钟", eventText.text(),
            QMessageBox::Ok);
        }

        if(flag)
        {
            timeText[2] = ':';
            flag = false;
        }else {
            timeText[2] = ' ';
            flag = true;
        }

        clock.display(timeText);

    });
}

Widget::~Widget()
{
}

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter *painter = new QPainter(this);

    QPixmap pic = QPixmap(":/new/prefix1/p1.png");

    painter->drawPixmap(0,0,this->width(),this->height(),pic);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值