Qt如何在QTabWidget上绘图
Qt绘图事件必须在paintEvent事件下绘图,这样导致我们在向Qt设计师界面上拖拽的控件绘图时,造成了很大的麻烦。
我们不能在拖拽的控件上写paintEvent函数,但是可以自定义一个类,继承某一个控件,在里面写绘图事件函数,但是这个非常麻烦,
此时我们需要借用Qt事件过滤器函数eventFilter(QObject * watched, QEvent * event)
在Qt助手上,我们可以查看该函数,并且有该函数的示例说明:
Qt帮助文档的示例代码:
这里需要说明的是,如果你想调用Qt事件过滤函数这一行代码必不可少: ui->tab1->installEventFilter(this);
笔者将放入自己写的部分代码:
bool MainWidget::eventFilter(QObject *watched, QEvent *event)
{
if(watched == ui->DrawCircuit && event->type() == QEvent::Paint)
DrawCircuitPaint();
return QWidget::eventFilter(watched, event);
}
void MainWidget::DrawCircuitPaint()
{
QPainter painter(ui->DrawCircuit); //指定画笔
QPen pen(QColor(, , ));
//设置笔宽
pen.setWidth();
painter.setPen(pen); //绘制长方体
painter.drawLine(QPoint(, ), QPoint(, ));
painter.drawLine(QPoint(, ), QPoint(, ));
painter.drawLine(QPoint(, ), QPoint(, ));
painter.drawLine(QPoint(, ), QPoint(, )); pen.setColor(QColor(, , ));
pen.setWidth();
painter.setPen(pen); //中间竖杠
painter.drawLine(QPoint(, ), QPoint(, ));
painter.drawLine(QPoint(, ), QPoint(, )); //100-1
painter.drawLine(QPoint(, ), QPoint(, ));
painter.drawLine(QPoint(, ), QPoint(, )); //100-2
painter.drawLine(QPoint(, ), QPoint(, ));
painter.drawLine(QPoint(, ), QPoint(, )); }
笔者的成功案例:
笔者摸索了很久,希望能帮助到某些人。
Qt如何在QTabWidget上绘图的更多相关文章
- Qt Creator中的3D绘图及动画教程(参照NeHe)
Qt Creator中的3D绘图及动画教程(参照NeHe) http://blog.csdn.net/cly116/article/details/47184729 刚刚学习了Qt Creator,发 ...
- QT 实现在QLabel上画图
QT之所以不能再任意控件上绘图是因为QT的事件过滤器把控件的绘图事件给过滤了. 在paintevent()函数中,通常需要设置QPainter对象,创建QPainter对象的同时需要指定绘图设备,即继 ...
- 实例演示:如何在Kubernetes上大规模运行CI/CD
本周四晚上8:30,第二期k3s在线培训如约开播!本期课程将介绍k3s的核心架构,如高可用架构以及containerd.一起来进阶探索k3s吧! 报名及观看链接:http://z-mz.cn/PmwZ ...
- 如何在Zabbix上安装MySQL监控插件PMP
PMP,全称是Percona Monitoring Plugins,是Percona公司为MySQL监控写的插件.支持Nagios,Cacti.从PMP 1.1开始,支持Zabbix. 下面,看看如何 ...
- 如何在MyEclipse上添加更换JRE
如何在myeclipse上添加更换JRE 由于兼容性的问题,有些WEB项目会依赖jdk的版本.如果需要更换jdk,那么,知道如何更换JRE的方法很有必要. 一种在myeclipse上添加和更换JRE的 ...
- 关于如何在github上创建团队开发环境
今天想写个如何在github上创建团队开发环境的博客.送给那些还不知道如何在github上创建团队开发环境的开发人员. 1.首先,当然你要有个github的账号.具体怎么注册我这里就不说了.可以上gi ...
- 如何在windows7上安装启明星系统。
启明星系统提供多种安装方式.安装包里自带了setup.exe.每个程序的 install下有在线安装(例如请假应用程序为book,则默认为 http://localhost/book/install ...
- 如何在Linux上通过grub添加内核参数
转自Linux中国 我们可以在linux内核启动时为其提供各种各样的参数.这些参数可以自定义内核默认的行为,或者通知内核关于硬件的配置信息.内核参数应在内核启动时通过引导装载程序,如GRUB或LILO ...
- (转)如何在Windows上安装多个MySQL
原文:http://www.blogjava.net/hongjunli/archive/2009/03/01/257216.html 如何在Windows上安装多个MySQL 本文以免安装版的mys ...
随机推荐
- windows server 简化设置
win2012任务管理器显示磁盘管理员运行命令提示符,diskperf -y 不要开机密码 运行 netplwiz 勾去掉 运行 gpedit.msc 计算机设置-Windows设置 -安全设置-帐户 ...
- log4net可视化查询
转自:https://www.cnblogs.com/huangxincheng/p/9120028.html 小步快跑的公司可以最简化操作直接通过log4net将日志写入ElasticSearch ...
- Sicily T-primes
DescriptionWe know that prime numbers are positive integers that have exactly two distinct positive ...
- Unix历史及相关概念回顾
欢迎来到Unix的世界 很多人都用了很多年的Unix(其实更熟悉的是叫Linux),也接触到Unix世界中的各种概念,比如GCC.GNU.BSD.POSIX.GPL等等,也大都知道一些传奇的如雷贯耳的 ...
- asp.net core的DI框架思考以及服务实例的获取方式总结
转载请注明出处: https://home.cnblogs.com/u/zhiyong-ITNote/ 整个asp.net core管道从WebHostBuilder到WebHost到后续请求的类中, ...
- 04-JQuery
今日任务 使用JQuery完成页面定时弹出广告 定时器: setInterval clearInterval setTimeout clearTimeout 显示: ...
- jquery第一篇
1 jquery是什么 <1> jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. <2>jQuery是继 ...
- python selenium ——— 动态id、class定位
什么样的是动态id呢? 动态id就是第一次点击显示的id与二次点击显示的不一样,一般是元素属性中包含一段数字的这种情况. 类似这种: 1 <input type="button&quo ...
- PCB布局布线
1.关键芯片的物理位置,明细信号流向,防止关键信号交叉,高速线布线通畅. 2.可装配,可维修,可测试. 3.模拟电路和数字电路分区摆放. 4.疏密有序. 5.原理图应该明确主芯片周边元件的布局要求. ...
- asch相关的linux基础知识分享
本文针对的人群:会用putty.SecureCRT.xhsell等工具ssh连接到自己的asch服务器上,但不怎么会执行命令的人.高手请绕路~ 本文主要围绕受托人搭建.维护涉及相关的内容进行Linux ...