Qt实现窗体在显示屏旁边自动隐藏(类似QQ)

看群里有人问这个东西,本人闲来无事便依照自己的想法实现了下:


其实实现的点子很简单:

void AutoHideWidget::leaveEvent(QEvent *event)
{isAutoHide();if (m_bIsAutoHide){hideWidget();}
}void AutoHideWidget::enterEvent(QEvent *event)
{if (m_bIsAutoHide){showWidget();}
}

在鼠标离开窗体的时候去判断窗体是否满足自动隐藏的条件,以及自动隐藏的方向,如果满足则自动隐藏,否则不操作。
鼠标再次进入窗体的时候,判断是否自动隐藏,隐藏则自动显示出来。

重点:


其实窗体隐藏后还是有很小的一部分显示的,因为就是依靠这点显示区感应鼠标再次进入的事件。

眼里的隐藏和显示

看看代码大家就很清楚了

void AutoHideWidget::hideWidget()
{QPropertyAnimation *animation = new QPropertyAnimation(this, "geometry");animation->setDuration(100);animation->setStartValue(QRect(this->pos(), this->size()));QRect rcEnd;if (m_enDriection & Up){rcEnd = QRect(this->x(), -this->height() + 2, this->size().width(), this->rect().height());}else if (m_enDriection & Left){rcEnd = QRect(-this->width() + 2, this->y(), this->size().width(), this->rect().height());}else if (m_enDriection & Right){rcEnd = QRect(m_nDesktopWidth - 2, this->y(), this->size().width(), this->rect().height());}animation->setEndValue(rcEnd);animation->start();
}void AutoHideWidget::showWidget()
{QPoint pos = this->pos();QPropertyAnimation *animation = new QPropertyAnimation(this, "geometry");animation->setDuration(100);animation->setStartValue(QRect(pos, this->size()));QRect rcEnd;if (m_enDriection & Up){rcEnd = QRect(this->x(), 0, this->size().width(), this->rect().height());}else if (m_enDriection & Left){rcEnd = QRect(0, this->y(), this->size().width(), this->rect().height());}else if (m_enDriection & Right){rcEnd = QRect(m_nDesktopWidth - this->width(), this->y(), this->size().width(), this->rect().height());}animation->setEndValue(rcEnd);animation->start();
}

其实就是将窗体移动到屏幕外了,在移动的时候加上动画就搞定了。

源代码下载:源码下载

Qt实现窗体在显示屏旁边自动隐藏(类似QQ)相关推荐

  1. python 窗体在屏幕边缘自动隐藏_如何阻止图像离开屏幕边缘?

    当鼠标悬停在窗口边缘时,jetfighterx的一部分会离开屏幕,这会导致狼蛛在它重生到窗口顶部时不时爆炸,我如何才能阻止这种情况的发生(不使用类)?在 代码:import pygame, sys, ...

  2. Qt 自定义悬浮窗(带动画,类似QQ拼音输入法)

    1.运行效果 实现功能: 1.可拖动. 2.可显示,可隐藏 . 3.悬浮在主界面上面. 4.带动画. 2.ui界面  3.源码 //FloatingWindow.h #pragma once#incl ...

  3. 模拟QQ自动隐藏窗体

    //--------------------------------------------------------------------------- // 代码名称:模拟QQ自动隐藏窗体 //  ...

  4. 开发精彩实例:窗体自动隐藏

    最近写个小程序,想让窗体自动隐藏,到csdn搜索,发现不少网友问这个问题,可是具体实现的例子不多,我经过琢磨,实现可记录停靠位置,可左上右三方停靠并隐藏.现将实现的例子拿出来供大家参考.  实现窗体自 ...

  5. Qt写的流量监控 and 网络延迟 and 自动隐藏

    功能:流量时时监控,5秒均值,30秒峰值,网络延迟,自动隐藏到桌面右侧 软件界面如下: 链接 https://download.csdn.net/download/bidevsdadi/1249775 ...

  6. 制作可以自动隐藏的弹出式菜单

    关键在于对WM_ENTERIDLE消息的处理 在菜单状态下移动鼠标会产生WM_ENTERIDLE消息 这时用TempPoint.WindowFromPoint可以取得当前鼠标所指窗体的句柄 再用Get ...

  7. excel链接隐藏工作表_自动隐藏Excel工作表

    excel链接隐藏工作表 When you build a workbook for other people to use, there might be worksheets that can s ...

  8. C#实现仿QQ窗口靠边自动隐藏

    今晚做网络通讯的实验,想实现下类似QQ滴窗口靠近屏幕上方自动隐藏,上网搜了下代码,发现这个比较简单,而且又很好的实现了所需功能,特记录如下,主要用了三个计时器来实现,开始时设置计时器1启用,计时器2 ...

  9. 【C#】WPF和winform窗体贴边隐藏(类似QQ)

    [WPF]实现窗体贴边隐藏 1.新建WPF项目Test,主窗体MainWindow.xaml,在后台MainWindow.xaml.cs填写下面的代码.主窗体调用Hide类,实现隐藏功能. //有些引 ...

最新文章

  1. 语音合成的语音相位图
  2. 2019百度之星初赛1
  3. cf1553E. Permutation Shift
  4. ik做尾巴摆动 maya_maya中使用节点做IK骨骼的拉伸
  5. 485通信实现自动收发功能
  6. Scanner和BufferedReader从控制台读取输入数据
  7. 公交驾校自动约车脚本
  8. VC6生成Release版本程序
  9. 【机器学习】CART决策树原理及python实现
  10. 【.Net】.Net操作AD域账号,获取AD用户后可以获取的属性列表 directoryEntry Properties list
  11. java开发html如何转换为word,Java怎么将html转换成word
  12. 五类、超五、六类、超六类网线
  13. solidworks 显示设计库图标
  14. tplink路由器设置网址方法
  15. 指定decode_responses=True,连接redis存的数据是字符串格式
  16. WiFi、ZigBee、BLE用哪个?小米内部是这样选的
  17. [IDA Plugin] IDA插件收集
  18. Sublime Text 4.0 4084 汉化版 — 代码编辑器
  19. 自动语音对话系统 Python实现
  20. matlab函数exp,Matlab基本函数-exp函数

热门文章

  1. grpc keepalive
  2. 爱尔兰拥抱数字货币和互联网金融解决方案
  3. 注册公司注册资本怎么出?
  4. 第一章 BIRT简介
  5. asp.net在线阅读pdf
  6. 从零开始学C++之IO流类库(四):输出流格式化(以操纵子方式格式化,以ios类成员函数方式格式化)
  7. NYOJ589 糖果
  8. oracle更新预计需要多久,oracle update操作的优化一例
  9. 字段(C# 编程指南)
  10. 群雄争锋:大同光伏领跑者项目全解析