Qt绘图事件必须在paintEvent事件下绘图,这样导致我们在向Qt设计师界面上拖拽的控件绘图时,造成了很大的麻烦。

我们不能在拖拽的控件上写paintEvent函数,但是可以自定义一个类,继承某一个控件,在里面写绘图事件函数,但是这个非常麻烦,

此时我们需要借用Qt事件过滤器函数eventFilter(QObject * watched, QEvent * event)

在Qt助手上,我们可以查看该函数,并且有该函数的示例说明:

Qt帮助文档的示例代码:

这里需要说明的是,如果你想调用Qt事件过滤函数这一行代码必不可少: 1 ui->tab1->installEventFilter(this);

笔者将放入自己写的部分代码:

 1 bool MainWidget::eventFilter(QObject *watched, QEvent *event)
 2 {
 3     if(watched == ui->DrawCircuit && event->type() == QEvent::Paint)
 4         DrawCircuitPaint();
 5     return QWidget::eventFilter(watched, event);
 6 }
 7 void MainWidget::DrawCircuitPaint()
 8 {
 9     QPainter painter(ui->DrawCircuit);
10
11     //指定画笔
12     QPen pen(QColor(0, 0, 255));
13     //设置笔宽
14     pen.setWidth(5);
15     painter.setPen(pen);
16
17     //绘制长方体
18     painter.drawLine(QPoint(200, 50), QPoint(200, 650));
19     painter.drawLine(QPoint(200, 50), QPoint(600, 50));
20     painter.drawLine(QPoint(600, 50), QPoint(600, 650));
21     painter.drawLine(QPoint(200, 650), QPoint(600, 650));
22
23     pen.setColor(QColor(0, 0, 0));
24     pen.setWidth(3);
25     painter.setPen(pen);
26
27     //中间竖杠
28     painter.drawLine(QPoint(380, 80), QPoint(380, 300));
29     painter.drawLine(QPoint(380, 350), QPoint(380, 620));
30
31     //100-1
32     painter.drawLine(QPoint(150, 200), QPoint(250, 200));
33     painter.drawLine(QPoint(300, 200), QPoint(380, 200));
34
35
36     //100-2
37     painter.drawLine(QPoint(150, 500), QPoint(250, 500));
38     painter.drawLine(QPoint(300, 500), QPoint(380, 500));
39
40 }

笔者的成功案例:

笔者摸索了很久,希望能帮助到某些人。

转载于:https://www.cnblogs.com/ailaowang/p/Qt.html

Qt如何在QTabWidget上绘图相关推荐

  1. Qt-在控件上绘图的方式

    1.总述 Qt的要在当前类对应的窗口上绘图一般需要重写paintEvent函数,但是Qt的事件过滤器默认是把父窗口下子控件的绘图事件给过滤了的,因此重写父窗口的paintEvent函数是无法在子控件上 ...

  2. Qt学习笔记之2D绘图

    一.概要 Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter.QPaintDevice和QPaintEngine这三个类.其中QPainter用 ...

  3. QT-在子控件上绘图的两种方式

    Qt 在控件上面绘图 label,pushbutton..... 1.构建一个新类来调用该控件的绘图函数,新类重写 paintEvent(QPaintEvent *) ▶构建: class DrawG ...

  4. Qt中使用OpenGL进行绘图

    Qt Creator中的3D绘图及动画教程(参照NeHe) 刚刚学习了Qt Creator,发现Qt提供了QtOpenGL模块,对OpenGL做了不错的封装,这使得我们可以很轻松地在Qt程序中使用Op ...

  5. html怎么给没张图片添加单击事件,如何在Canvas上的图形/图像绑定事件监听的实现...

    HTML中只能为元素/标签绑定监听函数: Canvas绘图中只有一个元素-canvas,每一个图形/图像都不是元素,不能直接进行事件绑定. 解决办法:"事件委托"--让canvas ...

  6. Qt实现在QLabel上显示图片并进行线条/矩形框/多边形的绘制

    文章目录 前言 一.事件过滤器 二.示例完整代码展示 三.下载链接 总结 前言 本文主要讲述了使用QPainter在QLabel上进行图片的显示,并使用事件过滤器让QLabel捕获QEvent::Pa ...

  7. 【QT 5 学习笔记-学习绘图相关+画线图形等+绘图事件+基础学习(1)】

    [QT 5 学习笔记-学习绘图相关+画线图形等+绘图事件+基础学习(1)] 1.说明 2.实验环境 3.参照学习链接 4.自己的学习与理解 5.学习与实践代码. (1)建立基础工程. (2)加入绘图事 ...

  8. r语言使用linux命令,技术|如何在 Ubuntu 上安装和使用 R 语言

    这个教程指导你如何在 Ubuntu 上安装 R 语言.你也将同时学习到如何在 Ubuntu 上用不同方法运行简单的 R 语言程序. R,和 Python 一样,它是在统计计算和图形处理上最常用的编程语 ...

  9. 【QT 5 学习笔记-学习绘图相关+画图形图片等+绘图设备+基础学习(2)】

    [QT 5 学习笔记-学习绘图相关+画图形图片等+绘图设备+基础学习(2)] 1.说明 2.实验环境 3.参照连接 4.自己的学习与理解 5.学习与实践代码 (1)移动图片测试实验 (1)继续之前的工 ...

最新文章

  1. Ext.data.reader.Json reader: json
  2. SHUoj 字符串进制转换
  3. MAC IOS ssh 连接下修改环境变量
  4. java web 开发基础_javaweb开发基础(一)
  5. python连接oracle报错tns_Python3操作oracle数据库及遇到的报错
  6. 2017.7.8 MS SQL Server and BI workshop
  7. linux mysql 保护_linux – 在Puppet中,我如何保护密码变量(在这种情况下是MySQL密码)?...
  8. linux sudoers_Linux –将用户添加到Sudoers列表
  9. VOIP通信中影响语音质量的因素
  10. 基于Echarts5实现的动态排序柱状图
  11. python调用百度地图画轨迹图_利用python和百度地图API实现数据地图标注的方法
  12. php getter,对象访问器 getter和setter
  13. 天体运行轨迹_都说运动是天体的基本特性,那么银河系是绕着什么运动的呢?...
  14. ios查看帧率的软件_iOS显示FPS值的工具FHHFPSIndicator
  15. VidLoc:A Deep Spatio-Temporal Model for 6-DoF Video-Clip Relocalization用于6-DoF视频片段重新定位的深度时空模型
  16. struct和union的区别和存储方式
  17. 还原html默认打开方式,怎么还原打开方式,详细教您Win10系统下如何还原程序默认打开方式...
  18. java 运行不出来的原因_小议Java程序不能运行的几种原因
  19. android伪装mac地址,安卓手机如何伪装ip或者mac地址
  20. Android 仿微信通讯录 导航分组列表-上】使用ItemDecoration为RecyclerView打造带悬停头部的分组列表

热门文章

  1. 设备网络SDK_Linux64中Net跨平台通用解决方案-后续
  2. Pyhton生成《百年孤独》高频词词云
  3. base64原理及加密C、Python代码
  4. 6个常见的开源人脸数据库及其数据特征
  5. 三菱PLC与第三方设备TCP通讯_【原创干货】一台威纶通触摸屏与多台三菱PLC通讯案例,欢迎收藏!...
  6. 在Centos8安装 Ansible Tower / Install and Configure Ansible Tower
  7. JSP的6种乱码解决方案
  8. 好网站搜集整理(吐血推荐)
  9. 51单片机矩阵键盘C程序
  10. 远程计算机或设备不接受连接解决方法