提要

鼠标进入窗体后,窗体自动置顶,鼠标移开窗体后,窗体恢复之前的状态。

示例

运行效果如下:
程序刚启动的效果如下:

鼠标放在某一个窗口上的效果如下:

可实现鼠标放在某一个窗口上该窗口置顶,且窗口的标题栏显示,移开鼠标后窗口恢复之前的大小,且标题栏隐藏。
项目的代码结构如下:

下面附上实现的代码。
widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include "widgetform.h"QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;widgetForm  *m_childWidget1;//子窗口1widgetForm  *m_childWidget2;//子窗口2
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//创建窗口m_childWidget1 = new widgetForm(QRect(0,0,200,200),this);m_childWidget1->setWidgetBackground(QColor(0,170,255,255));m_childWidget1->show();m_childWidget2 = new widgetForm(QRect(150,20,300,300),this);m_childWidget2->setWidgetBackground(QColor(170,85,127,255));m_childWidget2->show();
}Widget::~Widget()
{delete ui;
}

widgetform.h

#ifndef WIDGETFORM_H
#define WIDGETFORM_H#include <QWidget>namespace Ui {class widgetForm;
}class widgetForm : public QWidget
{Q_OBJECTpublic:explicit widgetForm(QRect rect, QWidget *parent = nullptr);~widgetForm();QRect getRect();//获取窗口位置大小void setWidgetBackground(QColor color);//设置窗口的背景色
protected:void paintEvent(QPaintEvent *event);//绘制窗口背景色void enterEvent(QEvent *event);//鼠标进入窗口放大,标题栏显示,窗口置顶void leaveEvent(QEvent *event);//鼠标离开窗口恢复
private:Ui::widgetForm *ui;QRect           m_rect;//窗口位置大小QRect           m_rectOld;//窗口原来的大小QColor          m_color;//窗口背景颜色
};#endif // WIDGETFORM_H

widgetform.cpp

#include "widgetform.h"
#include "ui_widgetform.h"widgetForm::widgetForm(QRect rect,QWidget *parent) :QWidget(parent),m_rect(rect),ui(new Ui::widgetForm)
{ui->setupUi(this);setWindowFlags(Qt::FramelessWindowHint);ui->widgetTitile->hide();setGeometry(m_rect);
}widgetForm::~widgetForm()
{delete ui;
}QRect widgetForm::getRect()
{return m_rect;
}void widgetForm::setWidgetBackground(QColor color)
{m_color = color;
}void widgetForm::paintEvent(QPaintEvent *event)
{Q_UNUSED(event);QPalette pal = palette();pal.setColor(QPalette::Background,QColor(m_color));setAutoFillBackground(true);setPalette(pal);QWidget::paintEvent(event);
}void widgetForm::enterEvent(QEvent *event)
{ui->widgetTitile->show();m_rectOld = geometry();//获取窗口原来的位置大小setGeometry(m_rectOld.x(),m_rectOld.y(),500,300);raise();//实现窗口置顶
}void widgetForm::leaveEvent(QEvent *event)
{ui->widgetTitile->hide();setGeometry(m_rectOld);
}

main.cpp

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

qt鼠标进入窗体后,窗体自动置顶相关推荐

  1. ExtJS:鼠标移出菜单后菜单自动隐藏

    ExtJS:鼠标移出菜单后菜单自动隐藏 1.使用的是Extjs2.0.2. 2.遇到的问题,简述如下: 当下拉菜单显示后,如果不做任何操作,而直接移开鼠标,此时菜单不会自动消失(隐藏),一直会显示在屏 ...

  2. VC/MFC 控件置顶 窗体内控件置顶

    窗体内指定某个控件置顶,使用SetWindowPos函数.但不能这样用    ::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOS ...

  3. 敬业签电脑备忘录软件如何设置待办事项已完成自动置顶?

    敬业签是一款具备多端同步.定时提醒.防止误删等功能的备忘录软件. 在敬业签云便签上,可对便签内容标记已完成,标记已完成的便签系统默认横线划去保留在内容栏下的原地位置,被标记已完成的待办事项将统一进入已 ...

  4. 在andriod手机上video视频播放时自动置顶自动全屏的问题

    问题:h5开发人员在做直播的时候,会发现视频在播放的时候会置顶,文字什么的根本加不上去 查了很多资料,有人说用样式层级方法,有人说用canvas画布来实现,反正我是没实现 也查看了各大视频APP分享到 ...

  5. echarts鼠标滑动缩放后会自动回弹(已解决)

    今天碰到的一个小坑:由于数据过多,在有限的视野内显示不完,需要滑动缩放完成数据的预览.跟着官方文档写之后确实是实现缩放和滑动,但是问题也就出现了,过了几秒后自动回弹原大小. 原代码:(会发生回弹) d ...

  6. minui点击分页控件后滚动条置顶

    需求:当点击miniui的分页控件后(上一页.下一页.第一页.最后一页)后要求若滚动条没有置顶则自动置顶 解决方案之一: 通过百度发现js有自带的方法可以设置滚动条的位置具体如下: window.sc ...

  7. 基于Qt的QSplashScreen实现桌面水印,在windows下置顶失效解决办法

    基于Qt的QSplashScreen实现桌面水印,但在windows下重复关闭启动水印程序后会出现置顶失效的现象 现象:通过线程启动-关闭-再启动水印操作后,水印程序会出现置顶失效的问题 解决方案:调 ...

  8. vue 页面不置顶问题(页面内操作、页面跳转后) - 集合篇

    文章目录 vue 页面内切换dom,页面跳转后 都不置顶? 一.页面内操作: 1.1 代码如下: 二.页面之间跳转: 2.1 代码截图 · 说明: 2.2 增加代码 · 示下: 三.拓展 · (直接置 ...

  9. 窗口置顶(置于桌面所有程序之上)VC/MFC 怎么将窗口置顶

    软件界面全屏显示后,需要把窗体置于其他桌面程序之上,但总是置于其他弹出框之下,会造成用户忽略了导致用户不明什么原因. 百度查了好多方法总是失败. 后来查到了CSND的一个帖子http://bbs.cs ...

最新文章

  1. AAAI 2020 | 滴滴东北大学提出自动结构化剪枝压缩算法框架,性能提升高达120倍...
  2. 【高并发】ReadWriteLock怎么和缓存扯上关系了?!
  3. java 注解去掉缓存_java spring 使用注解来实现缓存
  4. python简易木马(一)
  5. 互联网1分钟 |1112
  6. Android官方开发文档Training系列课程中文版:分享简单数据之添加简单的分享行为
  7. [Node.js] 使用nodejs操作mysql数据库
  8. 关于页面文件路径的问题
  9. 将 SharePoint 2010 网站集升级到 2013 (含沙盒方案)
  10. python编程入门 适合于零基础朋友-零基础能学好python吗?教女朋友学python是送命题吗?...
  11. 问答项目---登陆验证码点击切换及异步验证验证码
  12. JavaScript书籍的免费32本-收集分享
  13. PGM:部分有向模型之条件随机场与链图模型
  14. C语言游戏编程之反弹小球
  15. UART、RS232、RS485协议
  16. Python爬虫:浅谈【破解某易云音乐加密-JS逆向】
  17. 数理统计中95%置信区间的含义
  18. java客服管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  19. WIN10如何进入BIOS界面
  20. raid卡三块硬盘以上,创建没有raid5

热门文章

  1. 福建品品香茶业有限公司业务迁移上云
  2. CDN百科 | 假如没有CDN,网络世界会变成什么样?
  3. 心动网络:PolarDB助力心动网络打造爆款手游
  4. 唱吧基于 MaxCompute 弥补自建体系的不足
  5. 阿里巴巴叔同谈云原生和云计算
  6. 新功能:阿里云负载均衡支持HTTP/2、WSS协议
  7. 一文知晓浪潮云海OS在SPEC Cloud测试中的调优实践!
  8. 科创板注册获批,优刻得将成为“公有云第一股”
  9. 华为麒麟990芯片发布;谷歌宣布开源创新隐私保护技术;阿里20亿美元全资收购网易考拉;中国联通将设立100亿5G创新基金……...
  10. 火热的云计算,你知道这些吗?