文档章节

Qt 之旅--- 07 基本画图

OSC_JSON
 OSC_JSON
发布于 2018/05/25 21:17
字数 422
阅读 25
收藏 0

#include <QPaintEvent> //画图事件

#include <QPainter>// 画图设备

 

1 基本知识

  Painter 画图设备

pen :笔

brush:刷子

通过改变笔和刷子实现多个样式

 

//例如

     QPainter painter(this);
    QPen pen(Qt::DotLine);
    QBrush brush(Qt::blue);
    brush.setStyle(Qt::HorPattern);
    painter.setPen(pen);
    painter.setBrush(brush);
    painter.drawRect(50,50,200,100);

在paintevent 事件实现  

效果如下:

2 基本常用方法

  会发现 大部分函数都是内联函数

   //填充矩形

    void fillRect(const QRectF &, const QBrush &);
    inline void fillRect(int x, int y, int w, int h, const QBrush &);
    void fillRect(const QRect &, const QBrush &);

    void fillRect(const QRectF &, const QColor &color);
    inline void fillRect(int x, int y, int w, int h, const QColor &color);
    void fillRect(const QRect &, const QColor &color);

    inline void fillRect(int x, int y, int w, int h, Qt::GlobalColor c);
    inline void fillRect(const QRect &r, Qt::GlobalColor c);
    inline void fillRect(const QRectF &r, Qt::GlobalColor c);

   inline void fillRect(int x, int y, int w, int h, Qt::BrushStyle style);
    inline void fillRect(const QRect &r, Qt::BrushStyle style);
    inline void fillRect(const QRectF &r, Qt::BrushStyle style);

//画线

inline void QPainter::drawLine(const QLineF &)

inline void QPainter::drawLine(const QLine &line)

inline void QPainter::drawLine(int x1, int y1, int x2, int y2)
inline void QPainter::drawLine(const QPoint &p1, const QPoint &p2)

inline void QPainter::drawLine(const QPointF &p1, const QPointF &p2)
//画矩形

inline void QPainter::drawRect(const QRectF &rect)
inline void QPainter::drawRect(int x, int y, int w, int h)
inline void QPainter::drawRect(const QRect &r)

//画圆

inline void QPainter::drawEllipse(int x, int y, int w, int h)
inline void QPainter::drawEllipse(const QPointF &center, qreal rx, qreal ry)

inline void QPainter::drawEllipse(const QPoint &center, int rx, int ry)

//画弧线

inline void QPainter::drawArc(const QRect &r, int a, int alen)
inline void QPainter::drawArc(int x, int y, int w, int h, int a, int alen)

 

3 源码


#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void  MainWindow::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPen pen(Qt::DotLine);
    QBrush brush(Qt::blue);
    brush.setStyle(Qt::HorPattern);
    painter.setPen(pen);
    painter.setBrush(brush);
    painter.drawRect(50,50,200,100);
}
Demo16 地址:https://gitee.com/codemaner/qt_learning_record/tree/master

© 著作权归作者所有

OSC_JSON
粉丝 0
博文 34
码字总数 13195
作品 0
贵阳
程序员
私信 提问
使用Qt在内存中画图

前言 对于大多数Qt应用,我们在QWidget的paintEvent方法中创建和构造一个QPainter画图,或者在QGLWidget中的paintGL使用OpenGL函数画图,这是最常见的使用方式,并且基本能够满足应用需求。但...

006玩命
2016/08/24
0
0
Qt5和OpenGL一概述

从Qt5开始,OpenGL不再是单独模块,而是作为QtGUI核心的一部分。因为QtQuick基于该api实现。Qt作为基本的GUI开发框架,整合了2d和3d图形技术。 我们知道,OpenGL本身只提供平台无关的画图功能...

心翔
2015/12/07
4.1K
0
Qt平台抽象层和图形框架

Qt本身是一个界面框架,虽然也能做很多其它功能,但画图是其主要解决的问题. Qt只是一个应用程序,意味着其画图实现需要依赖特定操作系统平台,在不同平台需要不同实现. 在Qt5中,为了更好的实现移...

心翔
2016/08/28
580
0
WCF技术剖析(卷1)正式出版

【书 名】 WCF技术剖析(卷1) 【作 者】 蒋金楠 【出 版】 电子工业出版社 【书 号】 9787121089985 【出版日期】 2009 年7月 【开 本】 16 【页 码】 548 【字 数】 650千字 【内容简介】 ...

长平狐
2012/09/04
67
0
Qt for Android环境搭建浅谈

首先JDK的介绍及下载和安装 是基于运行的, 那么同理,开发应用程序也需要, 换句话说,需要安装,也就是俗称的. JDK官方下载: 其次Android SDK的介绍及下载和安装 既然是开发,那么我们不可避免的...

jannn
2016/04/13
266
4

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
今天
5
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
今天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
今天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
今天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部