zoukankan      html  css  js  c++  java
  • Qt focusoutevent 不响应的解决方法

    一般利用focus(焦点)来实现弹窗自动关闭效果. 

    Qt的focus貌似是自己的bug, 经常无法接收到focusout的事件

    例如: widgetA 中执行  widgetB->show(); widgetB->setfocus(...); 后 点击widgetA 中的edit控件则widgetB会接收一个focusoutevent, 但是如果点击的是WdigetA中的button, 则WidgetB毫无反应,  这是不正常的

    解决方法:

    windows平台上, 重载nativeEvent(Qt5)或者winEvent(Qt4) 处理WM_KILLFOCUS消息

    注意: nativeEvent 或winEvent应该是独立窗口才会被调用

    另外试了挺久的, 还有个方法: 

    widgetB->show(); widgetB->activateWindow(); widgetB->setfocus(...);

    添加这句widgetB->activateWindow(); 也可解决问题

    Qt文档中对activateWindow的解释: An active window is a visible top-level window that has the keyboard input focus.

    ps: Qt5.1性能提升了不少, 也改进了很多bug, 还是不错的, 不过Qt的bug还是相当的多哎

  • 相关阅读:
    2017.1.10学习笔记
    v-model双向绑定
    指令之v-bind
    v-for列表渲染
    事件修饰符
    v-on
    指令v-text v-html
    vue起步
    Swoole HTTPServer
    SwooleTCP
  • 原文地址:https://www.cnblogs.com/lingdhox/p/3390159.html
Copyright © 2011-2022 走看看