初学QT(Day05)

news2024/11/26 15:51:00

继续第四天的demo

总结了之前的经验教训,我重新开一个项目项目,先给出demo的结果吧,第一张是第一次写的demo,第二张图是成品的demo
在这里插入图片描述
在这里插入图片描述

结果还是比较满意的,虽然过程中有遇到的问题不是我自己独立解决的。。。相比于第一个demo,提升了鼠标和子控件的配合的灵敏度,同时保证了在鼠标出界的时候,子控件是保持在父窗口中的,同时依然在qt的应用程序输出窗口输出手柄的坐标

说一下中间遇到的坎坷吧:

  • 一开始我是重新定义了一个继承于QLabel的类,在这个类中重写mouseEvent的三个函数,但是结果并不如人意,因为要控制鼠标和这个handle同时移动,同时保持handle保持在主窗口中不能出界,如果在这个继承于QLabel的类中重写鼠标事件,即使是在父窗口中再次重写鼠标事件也无济于事,因为根据QT的机制/规则,如果父窗口和子窗口重写了同一个函数,那么编译器会首先执行子窗口重写的函数,如果子窗口没有重写这个函数,那么就会向上寻找,也就是向这个子控件的父控件寻找,父控件可能不执行也可能覆盖子控件执行的操作,这是非常不规范的。
    所以在这一次的demo中只有一个mainwindow类继承QMainWindow类,在这个类中重写鼠标事件的三个函数,使用isin函数确定鼠标是否在子控件handle中。
  • 在这个demo中,首次尝试使用Pixmap添加背景图片(之前用的是setstylesheet)和使用QRect来寻找控件的中心坐标和左上角的坐标
  • 在使用Pixmap添加背景图片的时候,为了让背景图片填充到控件中,需要使用setScaledContents(1)
  • 还有就是使用信号的问题,我一开始是直接把定时器放到事件中的,但是后来发现不可行。因为如果在事件中执行定时器,那么在这个不断(随时有可能)被调用的事件中定时器就会不断的执行,在定时器中我放的是保证handle和鼠标一起移动的槽函数,所以含义是,鼠标移动一次,handle也跟着移动到相应的位置就可以了(是一对一的),而如果把定时器放到鼠标事件中,显然鼠标移动一次,定时器中的handle移动就会跟着执行多次(就变成一对多了)。那么在这种情况下,定时器就不适用了,我是直接将槽函数放到事件中了(槽函数也是成员函数,可以当成普通的成员函数使用)
  • 另外还需要保证handle不越界,所以在mouseMoveEvent中检测鼠标指向的handle是否越界,第一使用移动函数(槽函数)将鼠标和手柄绑定起来,让手柄跟随鼠标移动(这一步一定是第一步,要不然放到后面的话,检测越界的操作会被覆盖,都是泪),再使用handle的geometry获取手柄的左上角的x,y坐标,判断x,y坐标加上手柄的尺寸是否大于主窗口的尺寸

还有一些话

实际上还有很多问题,时间太长没办法全部记起来,但是重要的地方都记下来了,本来打算明天做一个圆形的手柄,但是今天又发了新任务,感觉难度比较大,可能没时间写了,如果想查看源码练手欢迎访问我的github主页,这是我练习qt的仓库,欢迎大家star

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/587330.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPT-4能否取代数据分析师?达摩院的初步实验为你解答~

深度学习自然语言处理 原创作者 | 刘嘉玲 最近,数据分析师圈子大家在讨论GPT-4对他们的工作有什么影响:是替代还是辅助?个人认为GPT-4可以帮助我提高工作效率和质量。 要成为一名高级的数据分析师,需要经过长期的学习和实践&#…

无代码玩转GIS应用,我也在行【文末送书】

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通…

jQuery-图片跟随

<!DOCTYPE html > <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>图片跟随 </title> <style type"text/css"> body { text-align: center; …

【配电网重构】基于改进二进制粒子群算法的配电网重构研究(Matlab代码实现

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

使用FPGA进行 AI 火灾定位-FirAI

部署在 FPGA 上加速的 AI 火灾侦查。助力消防人员快速应对火灾事故~ 绪论 问题&#xff1a;近年来&#xff0c;不断增加的城市人口、更复杂的人口密集建筑以及与大流行病相关的问题增加了火灾侦查的难度。因此&#xff0c;为了增强消防人员对火灾事件的快速反应&#xff0c;安装…

delmia机器人建模与装配

1 可以用catia中的模型或其他三维建模软件中的模型转化为step格式即可 2 在demlia中打开 3 打开单个零件保存为cgr格式 对机械臂所有零件都做同样的转化 4 新建装配设计&#xff0c;并导入带有坐标的零件 将转化后的零件都选中导入即是装配好的 5 将模式修改为device buildin…

用户行为数据采集:常见埋点方案优劣势对比及选型建议

数据采集是大数据的基石&#xff0c;用户在使用App、微信小程序等各种线上应用产生的行为&#xff0c;只有通过埋点才能进行采集。没有埋点&#xff0c;数据分析决策、数据化运营都是无源之水&#xff0c;巧妇难为无米之炊。但很多时候&#xff0c;“埋点”两个字却成了C端产品…

STM32——关于NVIC讲解及标准库应用(基础篇)

简介&#xff1a; NVIC是指STM32中的中断控制器&#xff08;Nested Vectored Interrupt Controller&#xff09;。中断是STM32中的重要机制&#xff0c;通过中断可以实现异步事件处理。NVIC提供了灵活、高效、可扩展的中断处理机制&#xff0c;支持多级优先级、多向中断、嵌套向…

深入理解网络协议

hi 大家好&#xff0c;之前带小伙伴&#xff0c;一起复习了一遍网络协议&#xff0c;对网络协议的核心知识进行梳理&#xff0c;希望大家早日掌握这些核心知识&#xff0c;打造自己坚实的基础&#xff0c;为自己目标慢慢积累&#xff0c;厚积薄发。 详细点击查看-> 极客星球…

傅一平:一文讲透ERP的下一代架构!

”5月22日&#xff0c;华为宣布仅用15小时便完成了全球88家子公司MetaERP系统的切换。这也意味着华为MetaERP系统研发取得胜利&#xff0c;成功摆脱外国供应商断供停服威胁&#xff0c;实现该系统的全栈自主可控。“ 自己最近对ERP下一代架构有了兴趣&#xff0c;原因有四个&am…

阿里拆成1+6+N,中台还搞不搞了?

&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3; &#x1f38d;大家好&#xff0c;我是慕枫 &#x1f38d;前阿里巴巴高级工程师&#xff0c;InfoQ签约作者、阿里云专家博主&#xff0c;一直致力于用大白话讲解技术知识 &#x…

推荐 6 个上周 火火火 的开源项目

本期推荐开源项目目录&#xff1a; 1. ChatGPT 网页应用&#xff08;AI&#xff09; 2. AI 换脸&#xff08;AI&#xff09; 3. API 调用 Midjourney 进行 AI 画图&#xff08;AI&#xff09; 4. 如何使用 Open AI 的 API&#xff1f;&#xff08;AI&#xff09; 5. 中华古诗词…

写在2023年乐夏前

&#xff08;1&#xff09;白衬衣的少年 勇敢的你 站在这里 脸庞清瘦却骄傲 &#xff08;2&#xff09;来啊&#xff0c;一起摇摆啊 这首歌发表在2016年。那时候的他们已经功成名就&#xff0c;彭磊却还能写出这样的词。 纸醉金迷不应该是&#xff1a;防晒霜、付税单、玫瑰金、…

Python海龟有了新技能,这回画了个印度美女。Python海龟洪水填充命令fill的用法

Python海龟有了新技能&#xff0c;这回画了个印度美女。看官想一想&#xff0c;如果要填充圆环区域&#xff0c;该如何填充呢&#xff1f;Python的海龟模块本质是对凸多边形的填充&#xff0c;对于凹多边形的填充无法胜任。 真正的Python海龟绘图在这&#xff0c;视频里还有点…

AI绘画真的是太神奇!

最近会员群的同学一直研究AI绘画&#xff0c;AI技术真的太神奇了&#xff0c;以前是插画师的看家本领&#xff0c;现在通过AI技术一下子让平头老百姓也能有这样的技能&#xff01;好像路痴有了导航也能开车了。最近在研究如何利用AI做卡通头像&#xff0c;发现这个不仅好玩&…

深度图解 Redis Hash(散列表)实现原理

1. 是什么 Redis Hash&#xff08;散列表&#xff09;是一种 field-value pairs&#xff08;键值对&#xff09;集合类型&#xff0c;类似于 Python 中的字典、Java 中的 HashMap。一个 field 对应一个 value&#xff0c;你可以通过 field 在 O(1) 时间复杂度查 field 找关联的…

更换Mysql数据库-----基于Abo.io 的书籍管理Web应用程序

之前公司一直使用的是ASP.NET Boilerplate (ABP)&#xff0c;但是当解决方案变得很大时&#xff0c;项目启动就变得非常慢&#xff0c;虽然也想了一些办法&#xff0c;将一些基础模块做成Nuget包的形式&#xff0c;让整个解决方案去引用。但是整个项目还是很臃肿&#xff0c;各…

双轴高精度倾角传感器安装方式和485协议

倾角安装注意事项 在安装传感器时&#xff0c;不正确安装会导致测量角度误差偏大。安装时请注意以下两点&#xff1a; 1.“两面”指安装面与被测物体的安装面紧靠&#xff08;被测物体的安装面要尽可能水平&#xff09;&#xff0c;不能有夹角产生&#xff08;如A图中的角a&a…

【靶场】vulfocus搭建和场景编排

前言 Vulfocus 是一个漏洞集成平台&#xff0c;将漏洞环境 docker 镜像&#xff0c;放入即可使用&#xff0c;开箱即用&#xff0c;这里我们搭建在云服务器上&#xff0c;需要高一点的配置&#xff0c;搭建可以按需搭建本地和自己的服务器上&#xff0c;我们主要使用场景编排功…

【系统学习】Java基础1之多线程

前言 被公司换岗一年多了&#xff0c;从Linux C换到了java开发&#xff0c;奈何大环境不好&#xff0c;半吊子经验找不到好工作。 接触了spring cloud, spring boot k8s等许多新的知识。已经开发Java生态相关项目已一年半&#xff0c;但都止步于用的阶段&#xff0c;自知毫无竞…