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还是相当的多哎

  • 相关阅读:
    C语言编程题
    boost-使用说明
    CButton控件
    sprintf()与sscanf()
    MFC中的几个虚函数
    CProgressCtrl进度条控件实现进度滚动效果
    移动窗口和根据条件查找指定窗口
    VC播放mp3的方法
    CEdit控件[转]
    关于鼠标的一些操作
  • 原文地址:https://www.cnblogs.com/lingdhox/p/3390159.html
Copyright © 2011-2022 走看看