画图板
.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);
}