首页
学习
活动
专区
圈层
工具
发布

PySide6 GUI 编程(43):自定义 QWidget

重载 paintEvent 方法 paintEvent的作用 paintEvent 方法是一个重要的事件处理函数,用于自定义控件的绘制。...自定义绘制: paintEvent 允许开发者在控件上绘制自定义内容,比如图形、文本、图像等。通过重写这个方法,可以实现复杂的自定义界面。...处理绘制事件: 当控件需要更新其显示内容时,Qt 会自动调用 paintEvent。这包括窗口的重绘、控件的状态变化等。...使用 QPainter: 在 paintEvent 中,通常会使用 QPainter 类来执行绘制操作。QPainter 提供了丰富的绘图功能,包括绘制线条、矩形、圆形、文本等。...paintEvent 的函数原型 def paintEvent(self, event: QPaintEvent): # 自定义绘制代码 paintEvent示例代码 from __future

1.2K66
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    浅谈基于QT的截图工具的设计与实现

    回到实际的部分,我们先使用QT编写一个窗体widget,然后重写窗体的paintEvent方法: class DemoWidget: public QWidget { public: void paintEvent...比如上面的动图中第一次的paintEvent。 窗体失去焦点,获得焦点等,之后几次paintEvent出发就是因此产生的。 当窗口控件被其他部件遮挡,然后又显示出来时,会对隐藏的区域产生一个重绘事件。...所以,绝对不能在paintEvent中调用repaint,这样会死循环。...比如,我们可以在调用update的地方多赋值几次调用: 在实际调用中,只会触发一次paintEvent: 如果换成调用5次repaint就会发现每调用一次就会触发一次paintEvent,读者可以自行测试...但一旦我们将鼠标移动到左上角,位于起始位置的左边和上边的时候,就应该用当前鼠标的位置作为矩形的左上角了: 于是,我们需要适当修改以下paintEvent中的代码: void paintEvent(

    1K20

    【从零开始的Qt开发指南】(二十四)Qt 界面优化之绘图实战:解锁自定义界面的无限可能

    1.2 绘图的关键:paintEvent 事件 与直接在构造函数中绘图不同,Qt 绘图必须在paintEvent事件中执行。...这是因为paintEvent会在特定场景下自动触发,确保绘图效果始终保持正确: 控件首次创建时 控件被遮挡后重新显示时 窗口最小化后恢复时 控件大小发生变化时 主动调用repaint()或update(...因此,所有绘图代码都必须放在paintEvent的重写函数中。...1.3 第一个绘图程序:绘制一条直线 下面通过一个最简单的示例,演示 Qt 绘图的基本流程: 步骤 1:在头文件中声明 paintEvent 事件 // widget.h #ifndef...示例:绘制两个不重合的圆形 void Widget::paintEvent(QPaintEvent *) { QPainter painter(this); // 1.

    26110

    Qt中国象棋一—— Qt 2D 绘图入门

    重新实现QWidget::paintEvent() 可用于订制窗口部件,并且可以设计出自己想要的风格。 一个常见的需求是在二维画板上显示大量的、轻量级的并且可与用户交互的项。...二、画一条线段 在绘图设备上(一般是窗口部件上)绘图,需要重新实现Qt的绘图事件——paintEvent。 什么情况下会产一个绘图事件呢?...1)当窗口部件第一次显示时,系统会自动产生一个绘图事件 2)重新调整窗口部件大小 3)当窗口部件被其他部件遮挡,然后又再次显示出来时,就会对隐藏的区域产生一个重绘事件 void Widget::paintEvent...三、画文本与画矩形 这次是绘图逻辑分离出来,然后在paintEvent(QPaintEvent *event)中调用。...painter.drawText(rect, Qt::AlignCenter,"Hello World"); painter.drawRect(rect);} void Widget::paintEvent

    2.4K10

    【QT】绘图

    可以允许我们绘制各种图形 QPaintDevice 描述QPainter把图形画到哪个对象上 QPen 描述QPainter画出来的线 QBrush 描述QPainter填充一个区域 一般绘图API的使用会放到paintEvent...事件中,当控件首次创建、控件被遮挡再解除遮挡、窗口最小化再回复、控件大小发生变化、主动调用repaint或update方法时,paintEvent会被触发 2、绘制形状 下面只有线段是写在paintEvent...里面的,其实它们都是要重写paintEvent函数的,为了简短表达,所以除了第一个其他的都没写出函数以及大括号和定义painter的部分 (1)线段 void Widget::paintEvent(QPaintEvent...painter.drawEllipse(QPoint(100,100),100,100); img.save("C:\\Users\\14725\\Desktop\\img.png"); 修改像素点 void Widget::paintEvent...结束画画 painter.end(); picture.save("C:\\Users\\14725\\Desktop\\picture.pic"); } void Widget::paintEvent

    43310

    30.QT-渐变之QLinearGradient、 QConicalGradient、QRadialGradient

    x1,y1表示渐变起始坐标, x2,y2表示渐变终点坐标 //如果只有x相等,则表示垂直线性渐变,如果只有y相等,则表示平行线性渐变,否则就是斜角线性渐变 示例1-垂直渐变: void Widget::paintEvent...示例2-水平渐变 void Widget::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setRenderHint...fy ); // cx cy : 设置圆的中心原点(center) // radius:设置圆半径 //fx fy : 设置焦点focus,也就是颜色的起始位置 示例1: void Widget::paintEvent...示例2: void Widget::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setRenderHint(QPainter...QConicalGradient ( qreal cx, qreal cy, qreal angle ); //设置(cx,cy)位置为圆锥尖,设置angle角度为起始颜色位置(顺时针渐变) 示例: void Widget::paintEvent

    2.3K50

    《突破控件限制:用Qt绘图API解锁高级界面定制能力》

    绘图 API 的使用一般不会在 QWidget 的构造函数中使用,而是要放到 paintEvent 事件中,在这里进行调用 paintEvent 会在以下情况下被触发: 控件首次创建。...y2 ); 参数: x1,y1:绘制起点坐标 x2,y2:绘制终点坐标 【案例】 在 “widget.h” 头文件中声明绘图事件,然后在 “widget.cpp” 文件中重写 paintEvent...() 方法,代码如下: void Widget::paintEvent(QPaintEvent *event) { (void) event; // 绘图工作就会放到这里来执行....绘制简单图片 新建项目,并且创建 qrc 文件,引入图片,如下: 在 “widget.h” 头文件中声明绘图事件,然后在 “widget.cpp” 文件中重写 paintEvent() 方法,代码如下:...void Widget::paintEvent(QPaintEvent *event) { (void) event; QPainter painter(this); //画图片

    68210
    领券