qt浮动窗口

提要

鼠标进入窗口后,窗口放大,且出现标题栏,鼠标移开,窗口标题栏隐藏,窗口还原。对于放大后超出显示区域的窗口,将窗口进行移动,使其在显示区域内。对于可以看清的窗口,只浮动显示标题栏,不进行放大,默认认为窗口在700x700时可以看清。

示例

只展示关键代码。

void CustomWidget::enterEvent(QEvent *event)
{ui->titleWidget->show();//保存原来的窗口大小位置m_oldSizePos = geometry();//获取窗口左上角坐标(场景坐标)QRect rectWin = geometry();outPut<<"矩形的宽:"<<rectWin.width()<<"高:"<<rectWin.height()<<"x:"<<rectWin.x()<<"y:"<<rectWin.y();//求出窗口宽高的最大值int max = rectWin.width() > rectWin.height() ? rectWin.width():rectWin.height();//最大值是否小于浮动窗口的区域700x700,小于出现浮动窗口,大于不需要出现浮动窗口if(max < FLOATWIN_RANGE){max = FLOATWIN_RANGE;//最长的边为700int otherLen;//另一边长if(rectWin.width() >= rectWin.height())//宽大与高{otherLen  = (float)FLOATWIN_RANGE / rectWin.width() * rectWin.height();rectWin.setWidth(max);rectWin.setHeight(otherLen);}else//高大于宽{otherLen = (float)FLOATWIN_RANGE / rectWin.height() * rectWin.width();rectWin.setWidth(otherLen);rectWin.setHeight(max);}if(rectWin.x() + rectWin.width() > SCENE_W){rectWin.moveLeft(SCENE_W - rectWin.width());//setX会改变矩形的宽}if(rectWin.y() + rectWin.height() > SCENE_H){rectWin.moveTop(SCENE_H - rectWin.height());}setGeometry(rectWin);m_isFloatWin = true;}outPut<<"矩形放大后宽:"<<rectWin.width()<<"高:"<<rectWin.height()<<"x:"<<rectWin.x()<<"y:"<<rectWin.y();
}void CustomWidget::leaveEvent(QEvent *event)
{ui->titleWidget->hide();if(m_isFloatWin){//窗口恢复大小setGeometry(m_oldSizePos);outPut<<"矩形恢复之前的宽:"<<m_oldSizePos.width()<<"高:"<<m_oldSizePos.height()<<"x:"<<m_oldSizePos.x()<<"y:"<<m_oldSizePos.y();m_isFloatWin = false;}
}

其中变量m_isFloatWin 初始化为false,其中enterEvent和leaveEvent为鼠标进入事件和鼠标离开事件。FLOATWIN_RANGE为定义的宏700,出现的浮动窗口的范围在700x700内,这样就不用考虑过大的窗口,如何出现浮动窗口,以及显示区域定义的长宽大于700后,不用考虑左上角坐标出现在显示区域外的情况,也属于一种偷懒行为吧,但适用于我目前的项目,视情况而定了可酌情增删代码。

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

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

相关文章

边缘计算精华问答 | 5G是否会“逼退”4G?

新的数据需求也催生了新的技术和商业模式&#xff0c;这便是最近一两年来边缘计算所产生的大背景&#xff0c;大火的边缘计算的核心技术是什么&#xff0c;面临着哪些挑战&#xff1f;今天就让我们来看看关于边缘计算的精华问答吧。1Q&#xff1a;边缘计算参考架构什么样&#…

企业实战(Jenkins+GitLab+SonarQube)_12_Jenkins+soanr服务器搭建和代码检查

文章目录一、前期准备1.1. jenkins 服务器搭建完成1.2. sonarqube服务器搭建完成二、Jenkins 配置2.1. 安装 Sonar 插件2.2. 配置 SonarQube servers2.3. 配置 SonarQube Scanner三、新建任务和配置3.1. 添加描述3.2. 设置最大构建数量&#xff0c;防止内存溢出3.3. 添加项目远…

qt怎么创建pri文件

提要 当多人合作开发一个项目的时&#xff0c;若每人创建一个工程&#xff0c;就会出现同一个项目中多个pro文件。pri文件就是解决多个pro文件的一种方式&#xff0c;方便了最后代码的合并。 示例 1.如何建立pri文件 2.pri文件与pro文件之间的联系怎样建立 如何建立pri文件…

阿里云智能技术战略架构师陈绪:透视2019云计算酣战

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a; 陈绪博士&#xff0c;阿里云智能技术战略架构师。转自&#xff1a;云…

qt先生成json文件后程序启动时读取json文件在一组数据模拟下正常,换一组数据就出现乱码

提要 程序编号后自己模拟的数据程序在生成和解析json时都正常&#xff0c;但是换了一组数据&#xff0c;生成的json文件中部分中文乱码&#xff0c;且出现json文件的格式被混乱的现象。 效果 上述出现的不正确的json文件&#xff0c;如下&#xff1a; {"btnInfo"…

Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 完美解决(tomcat error)

error&#xff1a; Linux下启动和关闭tomcat报错&#xff0c;如下图所示&#xff1a; Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program Neither the JAVA_HOME nor the …

Observers:让 ZooKeeper更具可伸缩性 | 时光机

戳蓝字“CSDN云计算”关注我们哦&#xff01;时光机&#xff1a;搭载这部时光机&#xff0c;带您回顾《程序员》大量优秀文章&#xff0c;重温经典技术干货&#xff0c;我们发现硬核技术永不过时&#xff0c;对于get要点、solve难题、提高自我&#xff0c;仍有非凡意义。作者&a…

企业实战(Jenkins+GitLab+SonarQube)_10_Jenkins通过Depoly插件热部署Java程序

文章目录一、 编辑配置文件1.1. 进入tomcat的conf目录1.2. 编辑tomcat-users.xml文件1.3. 添加配置信息二、 配置说明三、 启动tomcat服务3.1. 启动tomcat3.2. 浏览器访问3.3. 点击Manager App访问4033.4. 编辑配置文件3.5. 注释value部分3.6. 浏览器再次请求四、新建任务&…

简述Qt编程中遇到的编码格式问题

提要 当文本中出现中文的时候&#xff0c;在两者之前的文本编码格式不一样的时候就会出现乱码。就像qt5默认的编码格式为utf-8&#xff0c;而Windows的开发环境默认的是gbk编码。 编码转化 utf-8编码于gbk编码的转换为下面截图中所示。 本文的作者也不是很清除编码格式这块…

苹果支付60亿美元与高通和解?亚马逊不再运营中国国内市场业务;华为愿同德国签“无间谍软件协议”;Facebook开发语音服务...

戳蓝字“CSDN云计算”关注我们哦&#xff01;重磅先知亚马逊&#xff1a;从7月18日起将不再运营中国国内市场业务传Facebook开发语音服务&#xff1a;将与亚马逊和苹果Siri竞争瑞银预计苹果将向高通支付60亿美元和解金任正非&#xff1a;华为愿同德国签“无间谍软件协议”重磅快…

企业实战(Jenkins+GitLab+SonarQube)_11_Jenkins权限的划分

Jenkins 集成Role-based Authorization Strategy插件实现企业级权限管理 文章目录一、Jenkins权限简介&#xff1a;二、Role-based 插件下载和启用2.1. 下载安装2.2. Jenkins 启用Role-Based Strategy三、实战案例演示&#xff1a;3.1. 新建用户3.2. 创建角色3.2.1. 创建一个全…

漫威电影宇宙观影指南,口碑票房最佳都是谁

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;胡萝卜酱转自&#xff1a;DataGo数据狗美漫迷&#xff0c;尤其是漫威…

jenkins 远程启动tomcat报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

异常现象&#xff1a; jenkins 远程启动tomcat报错&#xff1a;Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 解决方案&#xff1a; 在开始脚本前面添加java的变量 export JAVA_HOME/app/jdk1.8.0_144 export CLASSPATH.:$JAVA_HOME/lib/dt.ja…

qt中update()的粗略理解

理解 项目中需要通过设置来更新界面&#xff0c;这个过程中若是窗口没有发生变化&#xff0c;即使通过调用update()函数来触发重绘函数重绘窗口&#xff0c;也不能立即显示被重绘的窗口。只有窗口变化的时候才会被显示出来。 示例说明 双击选中窗口&#xff0c;希望窗口的边…

漫话:如何给女朋友解释什么是乐观锁与悲观锁

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;最近&#xff0c;我和女朋友商量好&#xff0c;我负责制定行程&#xff0c;她负责购买…

tomcat在linux下开机启动

一、tomcat自启动设置方法 1、修改/etc/rc.d/rc.local这个文件 vim /etc/rc.d/rc.local 2、编辑/etc/rc.d/rc.local文件&#xff0c;最后添加下面两行脚本 export JAVA_HOME/app/jdk1.8.0_144 /app/apache-tomcat-9.0.20/bin/startup.sh start想学习更多微服务、分布式、中间…

qt中QList使用removeAt()删除元素

提要 QList删除元素的时候需要特别注意一点&#xff0c;将元素删除后链表中元素的排列。删除一个元素后&#xff0c;后面的元素会补到被删元素的位置&#xff0c;这样在for循环中若删除元素后继续执行下标&#xff0c;则会少遍历元素。下面看一个示例。 示例 下面是出错的代…

云计算之基,一文带你速懂虚拟化KVM和XEN

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者 &#xff1a;Pasca来源 &#xff1a;蛋蛋团正文 &#xff1a;共2022 字预计阅读时…

gradle下载及配置

下载&#xff1a;https://gradle.org/install/#manually 参考链接&#xff1a;https://www.cnblogs.com/linkstar/p/7899191.html 配置&#xff1a; 新建系统变量&#xff1a; GRADLE_HOME D:\Program Files\gradle-5.2.1编辑path,添加全局变量&#xff1a; ;%GRADLE_HOME%\…

qt自定义含有拖动功能的窗口在点击窗口的下拉列表时窗口移动

提要 自定义的弹出窗口&#xff0c;窗口可以实现按下鼠标拖动&#xff0c;鼠标释放停止拖动&#xff0c;窗口种含有子控件&#xff0c;下拉列表&#xff0c;在点击下拉列表时窗口移动。 解决方法 因为点击下拉列表的时候&#xff0c;触发了窗口的移动事件&#xff0c;所以添…