#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
protected:
void paintEvent(QPaintEvent *event);
};
#endif // WIDGET_H linux
#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 *event)
{
QPainter painter(this);
painter.drawLine(QPoint(0,0),QPoint(100,100));
//建立畫筆
QPen pen(Qt::green,5,Qt::DotLine,Qt::RoundCap,Qt::RoundJoin);
painter.setPen(pen);
QRectF rectangle(70.0,40.0,80.0,60.0);
int startAngle=30*16;
int spanAngle=120*16;
painter.drawArc(rectangle,startAngle,spanAngle);
pen.setWidth(1);
pen.setStyle(Qt::SolidLine);
painter.setPen(pen);
//繪製一個矩形
painter.drawRect(160,20,50,40);
//建立畫刷
QBrush brush(QColor(0,0,255),Qt::Dense4Pattern);
//使用畫刷
painter.setBrush(brush);
//繪製畫刷
painter.drawEllipse(220,20,50,50);
//設置紋理
brush.setTexture(QPixmap("yafeilinux.png"));
//從新使用畫刷
painter.setBrush(brush);
//定義四個點
static const QPointF points[4]={
QPointF(270.0,80.0),
QPointF(290.0,10),
QPointF(350.0,30),
QPointF(390.0,50)
};
painter.drawPolygon(points,4);
painter.fillRect(QRect(10,100,150,20),QBrush(Qt::darkYellow));
painter.eraseRect(QRect(50,0,50,120));
//線性漸變
QLinearGradient linearGradient(QPointF(40,190),QPointF(70,190));
//插入顏色
linearGradient.setColorAt(0,Qt::yellow);
linearGradient.setColorAt(0.5,Qt::red);
linearGradient.setColorAt(1.0,Qt::green);
//指定漸變區域之外的區域的擴散方式
linearGradient.setSpread(QGradient::RepeatSpread);
//使用漸變做爲畫刷
painter.setBrush(linearGradient);
painter.drawRect(10,170,90,40);
//輻射漸變
QRadialGradient radialGradient(QPointF(200,190),50,QPointF(275,200));
radialGradient.setColorAt(0,QColor(255,255,100,150));
radialGradient.setColorAt(1,QColor(0,0,0,50));
painter.setBrush(radialGradient);
painter.drawEllipse(QPointF(200,190),50,50);
//錐形漸變
QConicalGradient conicalGradient(QPointF(350,190),60);
conicalGradient.setColorAt(0.2,Qt::cyan);
conicalGradient.setColorAt(0.9,Qt::black);
painter.setBrush(conicalGradient);
painter.drawEllipse(QPointF(350,190),50,50);
//畫筆使用線性漸變來繪製直線和文字
painter.setPen(QPen(linearGradient,2));
painter.drawLine(0,280,100,280);
painter.drawText(150,280,tr("helloQt"));
}
Widget::~Widget()
{
delete ui;
}