xref: /OK3568_Linux_fs/app/forlinx/flapp/src/libs/ui/messagebox.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*消息堵塞窗口,堵塞父类窗口.父窗口过小导致消息窗口显示不全,适用全屏的显示窗口.用于部分平台弹窗无法使用情况.
2*4882a593Smuzhiyun   */
3*4882a593Smuzhiyun #ifndef MESSAGEBOX_H
4*4882a593Smuzhiyun #define MESSAGEBOX_H
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun #include <QWidget>
7*4882a593Smuzhiyun #include "ui_global.h"
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun class QEventLoop;
10*4882a593Smuzhiyun class UI_LIBRARY  MessageBox : public QWidget
11*4882a593Smuzhiyun {
12*4882a593Smuzhiyun     Q_OBJECT
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun public:
15*4882a593Smuzhiyun     enum Button{
16*4882a593Smuzhiyun         no=1,
17*4882a593Smuzhiyun         yes=2,
18*4882a593Smuzhiyun         yes_no=3
19*4882a593Smuzhiyun     };
20*4882a593Smuzhiyun     /*!
21*4882a593Smuzhiyun      * \brief showMessage显示消息盒子.
22*4882a593Smuzhiyun      * \param parent 父窗口,一般需要的.
23*4882a593Smuzhiyun      * \param text 显示的信息.
24*4882a593Smuzhiyun      * \param button 消息盒子button 类型.
25*4882a593Smuzhiyun      * \return 返回状态 Button 枚举.
26*4882a593Smuzhiyun      */
27*4882a593Smuzhiyun     static int showMessage(QWidget *parent, const QString &text,  Button button= yes);
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun     /*!
31*4882a593Smuzhiyun      * \brief showMessage显示消息盒子无button.
32*4882a593Smuzhiyun      * \param parent 父窗口,一般需要的.
33*4882a593Smuzhiyun      * \param text 显示的信息.
34*4882a593Smuzhiyun      */
35*4882a593Smuzhiyun     static int showDuringMessage(QWidget *parent, const QString &text,  int duringSeconds=2);
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun protected:
38*4882a593Smuzhiyun     explicit MessageBox(QWidget *parent, const QString &text,  Button button= yes);
39*4882a593Smuzhiyun     explicit MessageBox(QWidget *parent);
40*4882a593Smuzhiyun     int exec();
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun     QEventLoop *m_pLoop= nullptr;
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun     void paintEvent(QPaintEvent *e);
45*4882a593Smuzhiyun private:
46*4882a593Smuzhiyun     bool eventFilter(QObject *watched, QEvent *event);
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun     void filterChild(QObject *o);
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun private:
51*4882a593Smuzhiyun     QList<QObject*> m_object;
52*4882a593Smuzhiyun };
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun #endif // MESSAGEBOX_H
55