自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:
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.