目录 1、QPainter绘图类 2、QPen绘图类 3、QBrush绘图类 4、QPixmap绘图类 ---- 本篇博文主要介绍如何实现在窗口中绘图,在 PyQt5中,一般可以通过QPainter、QPen...1、QPainter绘图类 QPainter类在QWidget(控件)上执行绘图操作,它是一个绘制工具,为大部分图形界面提供了高度优化的函数,使QPainter类可以绘制从简单的直线到复杂的饼图等。...画笔设置为红色,使用预定义的Qt.red颜色。每次调整窗口大小时,都会生成一个绘图事件。使用size()方法得到窗口的当前大小,在新的窗口中随机分布工作区中的点。...为了能更清晰地看清各线之间的差异,将颜色设置成黑色,宽度设置为2像素(px)。Qt.SolidLine是预定义的线条样式之一。...定义QBrush 对象,然后将QPainter对象的画刷设置成QBrush 对象,并通过调用drawRect()方法绘制矩形。
drawText(self, event, qp): # 设置笔的颜色 qp.setPen(QColor(168, 34, 3)) # 设置字体 qp.setFont(...QFont('SimSun', 20)) # 画出文本 qp.drawText(event.rect(), Qt.AlignCenter, self.text) if name == "...(Qt.SolidPattern) qp.setBrush(brush) qp.drawRect(10, 15, 90, 60) brush = QBrush(Qt.Dense1Pattern...(brush) qp.drawRect(250, 15, 90, 60) brush = QBrush(Qt.Dense3Pattern) qp.setBrush(brush)...(130, 105, 90, 60) brush = QBrush(Qt.Dense6Pattern) qp.setBrush(brush) qp.drawRect(250,
dpi 每个平方英寸像素为300 pWriter->setPageMargins(QMarginsF(30, 30, 30, 30)); QPainter* pPainter...= pPainter->viewport().width(); int nPDFHeight = pPainter->viewport().height(); //在10%..., 100), Qt::AlignCenter, m_arg.printTitle); y+=140; pPainter->setPen(QPen(QBrush...//获取界面图片 int imageBorder=150; //设置图片水平边距为150 QPixmap pixmap = QPixmap::grabWidget...->name)); pPainter->drawText(QRect(nPDFWidth/3+50,y, nPDFWidth/3, 80), Qt::AlignVCenter | Qt
/选中状态图标 5:可设置显示边框线条/线条宽度/线条间隔/线条位置/线条颜色 6:可设置正常背景颜色/悬停背景颜色/选中背景颜色 7:可设置正常文字颜色/悬停文字颜色/选中文字颜色 8:可设置背景颜色为画刷颜色...* 5:可设置显示边框线条/线条宽度/线条间隔/线条位置/线条颜色 * 6:可设置正常背景颜色/悬停背景颜色/选中背景颜色 * 7:可设置正常文字颜色/悬停文字颜色/选中文字颜色 * 8:可设置背景颜色为画刷颜色...*painter); void drawText(QPainter *painter); void drawIcon(QPainter *painter); void drawLine...| QPainter::TextAntialiasing); //绘制背景 drawBg(&painter); //绘制文字 drawText(&painter);...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式
窗口绘图类 1.1 QPainter 绘制文字 绘制点 1.2 QPen 1.3 QBrush 1.4 QPixmap 2. 拖拽与剪贴板 2.1 拖拽 2.2 剪贴板 QClipboard 3....窗口绘图类 1.1 QPainter 在 QWidget上执行绘图操作 在QWidget.paintEvent() 中完成,绘制方法必须在 QtGui.QPainter对象的 begin() 和 end...设置画笔颜色 painter.setFont(QFont("SimSun", 20)) # 设置字体 painter.drawText(event.rect(), Qt.AlignCenter...(QColor(168, 150, 3)) # 设置画笔颜色 painter.setFont(QFont("SimSun", 7)) # 设置字体 painter.drawText...拖拽与剪贴板 2.1 拖拽 允许拖拽的控件,需要设置 QWidget.setDragEnabled() 为 True MIME介绍 :https://baike.baidu.com/item/MIME/
Qt中实现绘图功能和其他的库差不多,主要靠Painter,Pen,Brush之类的东西进行描绘。这里主要牵涉到QPainter,QPen,QBrush三个类,用法也很简单。...+= core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = Painter TEMPLATE = app...::white));//设置背景 setAutoFillBackground(true); setMinimumSize(400,400); } Painter::~Painter()...break; case Path://路径 p.drawPath(path); break; case Text://文字 p.drawText...(rect,Qt::AlignCenter,"Hello Qt!")
还可以在导航条前面加上图标等,就显得更加有特色。有了此控件,再也不用担心没有精美的导航了。总之这个控件在我的很多的项目中都在用,而且很多Qt界的朋友也在用,反响很热烈很好。...主要功能: 可设置文字的左侧+右侧+顶部+底部间隔 可设置文字对齐方式 可设置显示倒三角/倒三角边长/倒三角位置/倒三角颜色 可设置显示图标/图标间隔/图标尺寸/正常状态图标/悬停状态图标/选中状态图标...可设置显示边框线条/线条宽度/线条间隔/线条位置/线条颜色 可设置正常背景颜色/悬停背景颜色/选中背景颜色 可设置正常文字颜色/悬停文字颜色/选中文字颜色 可设置背景颜色为画刷颜色 二、代码思路 void...LinePosition_Bottom) { bgRect = QRect(0, 0, width, height - lineSpace); } //如果画刷存在则取画刷 QBrush...(QPainter *painter) { painter->save(); painter->setBrush(Qt::NoBrush); //根据当前状态选择对应颜色
QPainter::drawPixmap(const QPointF & p, const QPixmap & pm) 行 5079 C++ Qt5Guid.dll!...QPainter::drawPixmap(const QPoint & p, const QPixmap & pm) 行 796 C++ ------------------ Qt5Guid.dll!...QPainter::drawText(const QRect & r, int flags, const QString & str, QRect * br) 行 5955 C++ -------...QRasterPaintEngine::fillRect(const QRectF & r, const QBrush & brush) 行 1882 C++ Qt5Guid.dll!...QPainter::fillRect(const QRect & r, const QBrush & brush) 行 6971 C++ 只要从绘制代码,单步调试即可找到指定地点。
气泡是在paintEvent事件中,采用QPainter来绘制的。...(QFont::PercentageSpacing,0); // te_font.setLetterSpacing(QFont::PercentageSpacing, 100); //300%,100为默认...//设置字间距% // te_font.setLetterSpacing(QFont::AbsoluteSpacing, 0); //设置字间距为3像素 //设置字间距像素值 this->setFont...painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);...//消锯齿 painter.setPen(Qt::NoPen); painter.setBrush(QBrush(Qt::gray)); if(m_userType == User_Type
一、前言 这个控件一开始打算用样式表来实现,经过初步的探索,后面发现还是不够智能以及不能完全满足需求,比如要在此控件设置多个角标,这个用QSS就很难实现,后面才慢慢研究用QPainter来绘制,我记得当时接到这个定制控件任务的时候是...*painter); void drawText(QPainter *painter); private: int borderRadius; //圆角半径...//绘制背景 drawBg(&painter); //绘制文字 drawText(&painter); } void ColorButton::drawBg(QPainter...if (colorMode == ColorMode_Normal) { if (isPressed) { painter->setBrush(QBrush...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式
**************************/ #ifndef CUSTOMTABSTYLE_H #define CUSTOMTABSTYLE_H #include ...s.rheight() = 50; } return s; } void drawControl(ControlElement element, const QStyleOption *option, QPainter...tab->state & QStyle::State_Selected) { //save用以保护坐标,restore用来退出状态 painter->save(); painter->setBrush(QBrush...painter->drawRoundedRect(allRect, 8, 8); painter->restore(); } QTextOption option; option.setAlignment(Qt...::AlignCenter); painter->setFont(QFont("楷体", 18, QFont::Bold)); painter->setPen(0xffffff); painter->drawText
QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtCore import Qt...100,100, 400,300) self.setWindowTitle('Draw Demo') self.show() def paintEvent(self, event): qp = QPainter...() qp.begin(self) qp.setPen(QColor(Qt.red)) qp.setFont(QFont('Arial', 20)) qp.drawText...(10,150,150,100) qp.setPen(QColor(Qt.yellow)) qp.drawEllipse(100,50,100,50) qp.drawPixmap.../images/python.png")) qp.fillRect(200,175,150,100,QBrush(Qt.SolidPattern)) qp.end() if name =
*painter, int radius, const QBrush &brush); void drawArc(QPainter *painter); void drawText(QPainter...*painter, int radius, const QBrush &brush) { painter->save(); painter->setPen(Qt::NoPen);...(QPainter *painter) { bool ok; int radius = 100; painter->save(); //判断当前按下坐标是否在中心区域,...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式...linux等,不乱码,可直接集成到Qt Creator中,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便。
介绍 可以在QPaintDevice类上绘制各种图形 QPaintDevice类表示QPainter的绘图设备(画布) QpaintDevice子类有QImage、QOpenGLPaintDevice、...QWidget 等 所以, QPainter可以在QImage、QOpenGLPaintDevice、QWidget上进行绘制图形 QPainter只能在类对象的paintEvent()函数中绘制图形...*16); //绘画角度为30°~(30+150°) QPainter-视口/窗口 在Qt中, QPainter可以通过视口和窗口来设置自身组件大小位置....示例1-设置原点(0,0)为窗口的(100,100),设置绘画区域为窗口大小为100*100 如下图所示,其中蓝色为视口坐标,红色为窗口坐标: ?...,-8,Qt::black); painter.setPen(QPen(QBrush(Qt::green),1/(width()-100)/20)); //由于当前窗口和视口的比例为 width
::white); //设置渐变的颜色和路径比例 lg1.setColorAt(1, Qt::gray); //只是粗略的颜色,具体的可以参考RGB颜色查询对照表 painter->setBrush...(lg1); // 创建QBrush对象,把这个渐变对象传递进去: painter->setPen(Qt::NoPen); //边框线无色 painter->drawEllipse(-radius...painter->save(); painter->setPen(m_foreground); //m_startAngle是起始角度,m_endAngle是结束角度,m_scaleMajor在一个量程中分成的刻度数...= value; //update(); this->update(); // emit valueChanged(value); } 原理分析 实现原理 以实现下图的模拟表盘为例...表盘的实现是基于QT的QPainter类中的绘图方法,自定义实现一个QWidget控件。 将表盘分解析为3个组成部分。表盘的外形轮廓、指针和显示的当前速度的数值。
本篇介绍用如何QPainter()画出一个可以显示分数的滑块控件,并使其能正确地响应鼠标事件,键盘事件以及自动调整尺寸。 ?...,QBrush,QPen,QPolygonF #和 QT4 不一样,QPoint, QPointF转到了QtCore子模块 from PyQt5.QtCore import Qt, pyqtSignal...__denominator) painter = QPainter(self)#!...= QRectF(nRect) rect.moveCenter(QPointF(x, y + fm.height() / 2.0)) painter.drawText...fm.height() / 2.0)) painter.drawText(rect, Qt.AlignCenter, str(self.
浏览量 3 QTabWidget默认tab页标题(tabBar)在上面,但是有时候我们需要改变它的位置,比如做一个设置页面,想将它放到左边显示,这个比较简单,只需要设置一个属性即可实现:tabPosition...实现代码 1.创建界面及对应的头文件和源文件,在项目里头新建界面,比如setting,新建成功我们得到setting.h,setting.ui,setting.cpp这三个文件,然后界面添加标签页控件。...painter->save(); painter->setPen(0x89cfff); painter->setBrush(QBrush...painter->restore(); } QTextOption option; option.setAlignment(Qt...); }else{ painter->setPen(0x000001); } painter->drawText
基本图形绘制 QPainter绘制基本图形 **注意:**QPainter画弧度所使用的角度值,是以1/16°为单位的,在画弧度的时候1°用16表示。...---- QPainterPath绘制简单图形 QPainterPath为QPainter类提供一个存储容器,里面包含了所要绘制的内容的集合及绘制顺序,如长方形、多边形、曲线等各种任意图形。...当需要绘制此预先存储在QPainterPath对象中的内容时,只需调用QPainter类的DrawPath()即可,如addRect()加入一个方形,addEllipse加入一个椭圆形,addText(...;若交点为偶数则此点在图形的外部。...Qt::WindingFill填充规则:从图形中某一点画一条水平线到图形外,每个交点外边线方向可能向上、向下、方向相反的相互抵消,若结果不为0表示此点在图形内,若为0则在图形外。
,QFontMetricsF,QBrush,QLinearGradient,QPolygon,QPolygonF from PyQt5.QtCore import QPointF, QSize, Qt,...(self)# 创建QPainter实例,注意self!...= 0 else Qt.white)) #流速非零时,左边流体为红色 painter.setBrush(QBrush(gradient)) #画刷 #绘制左边多边形(4边形...= 0 else Qt.white)) #流速非零时,右边流体为蓝色 painter.setBrush(QBrush(gradient)) #绘制右边多边形(4边形)...) gradient.setColorAt(1, color) painter.setBrush(QBrush(gradient)) #
=west后的效果如下图 最终效果图 #ifndef MH1_H #define MH1_H #include #include #include...CE_TabBarTab,对其进行绘制 * */ void drawControl(ControlElement element, const QStyleOption *option, QPainter...painter->save(); painter->setPen(0x89cfff); painter->setBrush(QBrush...restore(); } QTextOption option; option.setAlignment(Qt...else { painter->setPen(0x5d5d5d); } painter->drawText
领取专属 10元无门槛券
手把手带您无忧上云