1. 简单demo:
代码:
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
void paintEvent(QPaintEvent*);
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.c
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
void Widget::paintEvent(QPaintEvent *){
QPainter painter(this);
QPen pen(QColor(255,0,0));
QBrush brush(Qt::cyan);
brush.setStyle(Qt::Dense7Pattern);
pen.setWidth(3);
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.setBrush(brush);
painter.drawLine(QPoint(0,0),QPoint(100,100));
painter.drawEllipse(QPoint(100,100),50,50);
painter.drawRect(QRect(20,20,50,50));
painter.drawText(QRect(10,200,150,50),"hello world");
}
Widget::~Widget()
{
delete ui;
}
2. 抗锯齿设置
QPainter painter(this);
painter.drawEllipse(QPoint(100,50),50,50);
painter.setRenderHint(QPainter::Antialiasing);
painter.drawEllipse(QPoint(200,50),50,50);
3. 移动画家的原点坐标
painter.drawRect(QRect(20,20,50,50));
painter.translate(100,0);
painter.drawRect(QRect(20,20,50,50));