zoukankan      html  css  js  c++  java
  • QT在子窗口外单击关闭子窗口

    1.添加过滤器(eventFilter),

    bool eventFilter(QObject *watched, QEvent *event);//过滤器

    2.重写鼠标单击事件,这两种方法都要判断鼠标单击位置是不是在子窗口上。而且在可编辑控件上如(下拉框、文本编辑框等),父窗口会直接传递到可编辑控件上,过滤器和重写的鼠标事件无法获取单击事件。

    void mousePressEvent(QMouseEvent *ev);//鼠标事件


    3.其实最简单有效的方法是设置窗口标志位
    setWindowFlags(Qt::FramelessWindowHint | Qt::Popup);

    Qt::Popup表明此窗口为最上层模态窗口,点击子窗口之外的位置都会自动隐藏,类似于菜单的效果。

    需要注意的是,使用move(point)函数来移动子窗口时,需要用全局坐标,虽然它的父对象没有变,但是坐标变成了全局坐标,需使用move(mapToGlobal(point))。
  • 相关阅读:
    luffy后台登录+注册+课程
    luffy前台登录+注册+课程
    luffy前台准备
    luffy后台准备
    跨域请求
    pip源和虚拟环境的搭建
    Book接口
    drf-Xadmin的使用
    drf-JWT认证
    drf-自动生成接口文档
  • 原文地址:https://www.cnblogs.com/nanqiang/p/14024056.html
Copyright © 2011-2022 走看看