当前位置: 首页 > news >正文

Qt中类提升后不显示问题

问题描述:

最近在qtCreator中写了一个程序.在这个程序中有一个控件需要自定义.所以我在使用qt设计师类画了一个控件然后再添加了一个MyButton类.在这个MyButton类里面我重写了几个鼠标事件以及重写了绘制事件:

每个重写的函数内的详细代码如下:

void MyButton::mousePressEvent(QMouseEvent *e)
{//鼠标点击事件if(e->button() == Qt::LeftButton){//加载点击图像p.load(m_press);//重绘update();}//还是要调用原来的事件进行响应QPushButton::mousePressEvent(e);
}void MyButton::enterEvent(QEvent *e)
{p.load(m_hover);update();QPushButton::enterEvent(e);
}void MyButton::leaveEvent(QEvent *e)
{p.load(m_normal);update();QPushButton::leaveEvent(e);
}void MyButton::mouseReleaseEvent(QMouseEvent *e)
{//鼠标点击事件if(e->button() == Qt::LeftButton){//加载点击图像p.load(m_normal);//重绘update();}//还是要调用原来的事件进行响应QPushButton::mouseReleaseEvent(e);
}void MyButton::paintEvent(QPaintEvent *e)
{(void)e;//重绘QPainter painter();painter.drawPixmap(rect(),p);// QPushButton::paintEvent(e);
}

在写下这些代码时我出现了组件提升后运行程序不显示的问题.查找bug时按照如下顺序进行了查找:

1,自定义控件的大小大于被提升控件的大小.

这块问题我在之前写项目时就遇到过,但是很可惜在排查完该项目后还是不对,自定义控件还是不显示.

2,重绘事件的问题

因为在自定义类中重写了重绘事件,所以对重绘事件代码进行了查看.我发现在重绘事件中没有调用QPushButton的重绘事件.所以:

1,我在代码中添加了QPushButton::paintEvent(QEvent*e);代码显示了但是显示的方式是以QPushButton原本的方式现实的.

2,去掉原本的事件,在重绘事件中给QPainter画家类指定父元素为该类.就是将 QPainter painter() 变成 QPainter painter(this);然后就正常显示了.

http://www.dtcms.com/a/319754.html

相关文章:

  • 纷享销客前端实习一面
  • 数据结构(五):顺序循环队列与哈希表
  • 纪念《信号与系统》拉普拉斯变换、Z变换之前内容学完
  • 树莓派Raspberry Pi 烧录
  • TCP/IP 协议中的三次握手和四次挥手-----详解笔记
  • 板块三章节3——NFS 服务器
  • 人工智能2.0时代的人才培养和通识教育
  • 计算机视觉第一课opencv(一)保姆级教学
  • lane_up channel_up
  • mysql8.0.40服务日志时间和linux系统时间不同步问题!
  • 指针——练习
  • 算法 - 贪心算法
  • 计网学习笔记第3章 数据链路层层(灰灰题库)
  • 冷库设备远程监控物联网+省电节能解决方案
  • linux下实现System V消息队列实现任意结构体传输
  • 具身智能,正在翻越三座大山
  • 计算机毕业设计java疫情开放下的新冠信息共享平台 基于Java的社区疫情防控人员流动管理系统 疫情防控期间社区人员动态管理系统
  • 范数的定义、分类与 MATLAB 应用实践
  • 解决React白板应用中的画布内容丢失问题
  • 3363. 最多可收集的水果数目
  • 关键字 - 第二讲
  • Spring AI + Redis:构建高效AI应用缓存方案
  • 【物联网】基于树莓派的物联网开发【25】——树莓派安装Grafana与Influxdb无缝集成
  • 在 Linux 系统上安装 Docker 的步骤如下(以 Ubuntu/Debian为例)
  • 前缀和
  • 简洁明了的讲明什么是哈希(hash)函数
  • [激光原理与应用-170]:测量仪器 - 能量型 - 光功率计的工作原理与内部功能模块组成
  • 【第7话:相机模型3】自动驾驶IPM图像投影拼接技术详解及代码示例
  • 直连微软,下载速度达18M/S
  • Mysql 单行函数 聚合函数