创建一个画图板,点击颜色,选择字体颜色
一、代码
#include "widget.h"
#include "ui_widget.h"
#include <QMouseEvent>
#include <QPainter>
#include <QPaintEvent>
#include <QColorDialog>
#include <iostream>
#include <QFontDialog>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->setFixedSize(1024,720);
mypix=new QPixmap(this->size());
mypix->fill(Qt::white);
ui->colorbtn->setIcon(QIcon(":/color.png"));
ui->colorbtn->setShortcut(QKeySequence("ctrl + F"));
pen.setColor(Qt::blue);
}
Widget::~Widget()
{
delete ui;
}
void Widget::mousePressEvent(QMouseEvent *e)
{
startpoint=e->pos();
}
void Widget::mouseMoveEvent(QMouseEvent *e)
{
Qt::MouseButtons btn = e->buttons();
if(btn == Qt::LeftButton)
{
QPainter painter(mypix);
pen.setWidth(5);
painter.setPen(pen);
painter.drawLine(startpoint,e->pos());
startpoint=e->pos();
update();
}else if(btn == Qt::RightButton){
pen.setColor(Qt::white);
QPainter painter(mypix);
pen.setWidth(20);
painter.setPen(pen);
painter.drawLine(startpoint,e->pos());
startpoint=e->pos();
update();
pen.setColor(Qt::blue);
}
}
void Widget::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
painter.drawPixmap(0,0,*mypix);
}
void Widget::on_colorbtn_clicked()
{
QColor color=QColorDialog::getColor(Qt::white,this);
if(color.isValid())
{
pen.setColor(color);
}
}
二、执行结果