QT失去focus后自动隐藏界面
自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:
https://www.cnblogs.com/bclshuai/p/11380657.html
1.应用场景
在一些临时显示的界面,比如声音的调节面板,设置好声音后,不需要手动按钮来控制隐藏,而是离开界面,或者失去focus之后自动隐藏窗口。如下图所示。
2.实现方法
重写下面两个虚函数,实现离开界面和失去foucs时自动隐藏的功能
void leaveEvent(QEvent *e); //离开QWidget瞬间事件
void focusOutEvent(QFocusEvent *event);//失去focus时自动隐藏
头文件
#ifndef VOICECTRL_H #define VOICECTRL_H #include <QDialog> #include "ui_voicewin.h" class VoiceCtrl : public QDialog { Q_OBJECT public: VoiceCtrl(); ~VoiceCtrl(); Ui::VoiceCtrl ui; protected: void enterEvent(QEvent *e); //进入QWidget瞬间事件 void leaveEvent(QEvent *e); //离开QWidget瞬间事件 void focusOutEvent(QFocusEvent *event);//失去focus时自动隐藏 private: }; #endif // VOICECTRL_H
源文件
3.创建对象并使用
在需要使用声音调节面板的地方,创建VoiceCtrl对象,通过点击按钮,来显示声音控制面板到按钮的上方,离开控制面板或失去focus之后自动隐藏。
//显示声音调节界面
{
QPoint point = this->mapToGlobal(ui.PlayWndToolbar_RightWnd->pos());
m_volumeCtrl.move(point.x()-4, point.y() - 110);
m_volumeCtrl.show();
//最关键的一步,一定要将界面对象设置为该属性,否则无法实现点击其他地方,声音界面无focus时自动隐藏。
m_volumeCtrl.setFocus(Qt::ActiveWindowFocusReason);
}
ActiveWindowFocusReason说明
public static final Qt.FocusReason ActiveWindowFocusReason
The window system made this window either active or inactive.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix