qmessagebox.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:14k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QMESSAGEBOX_H
  38. #define QMESSAGEBOX_H
  39. #include <QtGui/qdialog.h>
  40. QT_BEGIN_HEADER
  41. QT_BEGIN_NAMESPACE
  42. QT_MODULE(Gui)
  43. #ifndef QT_NO_MESSAGEBOX
  44. class QLabel;
  45. class QMessageBoxPrivate;
  46. class QAbstractButton;
  47. class Q_GUI_EXPORT QMessageBox : public QDialog
  48. {
  49.     Q_OBJECT
  50.     Q_ENUMS(Icon)
  51.     Q_FLAGS(StandardButtons)
  52.     Q_PROPERTY(QString text READ text WRITE setText)
  53.     // ### Qt 5: Rename 'icon' 'standardIcon' and 'iconPixmap' 'icon' (and use QIcon?)
  54.     Q_PROPERTY(Icon icon READ icon WRITE setIcon)
  55.     Q_PROPERTY(QPixmap iconPixmap READ iconPixmap WRITE setIconPixmap)
  56.     Q_PROPERTY(Qt::TextFormat textFormat READ textFormat WRITE setTextFormat)
  57.     Q_PROPERTY(StandardButtons standardButtons READ standardButtons WRITE setStandardButtons)
  58. #ifndef QT_NO_TEXTEDIT
  59.     Q_PROPERTY(QString detailedText READ detailedText WRITE setDetailedText)
  60. #endif
  61.     Q_PROPERTY(QString informativeText READ informativeText WRITE setInformativeText)
  62. public:
  63.     enum Icon {
  64.         NoIcon = 0,
  65.         Information = 1,
  66.         Warning = 2,
  67.         Critical = 3,
  68.         Question = 4
  69.     };
  70.     enum ButtonRole {
  71.         // keep this in sync with QDialogButtonBox::ButtonRole
  72.         InvalidRole = -1,
  73.         AcceptRole,
  74.         RejectRole,
  75.         DestructiveRole,
  76.         ActionRole,
  77.         HelpRole,
  78.         YesRole,
  79.         NoRole,
  80.         ResetRole,
  81.         ApplyRole,
  82.         NRoles
  83.     };
  84.     enum StandardButton {
  85.         // keep this in sync with QDialogButtonBox::StandardButton
  86.         NoButton           = 0x00000000,
  87.         Ok                 = 0x00000400,
  88.         Save               = 0x00000800,
  89.         SaveAll            = 0x00001000,
  90.         Open               = 0x00002000,
  91.         Yes                = 0x00004000,
  92.         YesToAll           = 0x00008000,
  93.         No                 = 0x00010000,
  94.         NoToAll            = 0x00020000,
  95.         Abort              = 0x00040000,
  96.         Retry              = 0x00080000,
  97.         Ignore             = 0x00100000,
  98.         Close              = 0x00200000,
  99.         Cancel             = 0x00400000,
  100.         Discard            = 0x00800000,
  101.         Help               = 0x01000000,
  102.         Apply              = 0x02000000,
  103.         Reset              = 0x04000000,
  104.         RestoreDefaults    = 0x08000000,
  105.         FirstButton        = Ok,                // internal
  106.         LastButton         = RestoreDefaults,   // internal
  107.         YesAll             = YesToAll,          // obsolete
  108.         NoAll              = NoToAll,           // obsolete
  109.         Default            = 0x00000100,        // obsolete
  110.         Escape             = 0x00000200,        // obsolete
  111.         FlagMask           = 0x00000300,        // obsolete
  112.         ButtonMask         = ~FlagMask          // obsolete
  113.     };
  114.     typedef StandardButton Button;  // obsolete
  115.     Q_DECLARE_FLAGS(StandardButtons, StandardButton)
  116.     explicit QMessageBox(QWidget *parent = 0);
  117.     QMessageBox(Icon icon, const QString &title, const QString &text,
  118.                   StandardButtons buttons = NoButton, QWidget *parent = 0,
  119.                   Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
  120.     ~QMessageBox();
  121.     void addButton(QAbstractButton *button, ButtonRole role);
  122.     QPushButton *addButton(const QString &text, ButtonRole role);
  123.     QPushButton *addButton(StandardButton button);
  124.     void removeButton(QAbstractButton *button);
  125. #ifdef Q_OS_WINCE
  126.     void setVisible(bool visible);
  127. #endif
  128. /*
  129.     These are probably overkill:
  130.     QList<QAbstractButton *> buttons() const;
  131.     ButtonRole buttonRole(QAbstractButton *button) const;
  132. */
  133.     void setStandardButtons(StandardButtons buttons);
  134.     StandardButtons standardButtons() const;
  135.     StandardButton standardButton(QAbstractButton *button) const;
  136.     QAbstractButton *button(StandardButton which) const;
  137.     QPushButton *defaultButton() const;
  138.     void setDefaultButton(QPushButton *button);
  139.     void setDefaultButton(StandardButton button);
  140.     QAbstractButton *escapeButton() const;
  141.     void setEscapeButton(QAbstractButton *button);
  142.     void setEscapeButton(StandardButton button);
  143.     QAbstractButton *clickedButton() const;
  144.     QString text() const;
  145.     void setText(const QString &text);
  146.     // ### QString informativeText() const;
  147.     // void setInformativeText(const QString &text);
  148.     Icon icon() const;
  149.     void setIcon(Icon);
  150.     QPixmap iconPixmap() const;
  151.     void setIconPixmap(const QPixmap &pixmap);
  152.     Qt::TextFormat textFormat() const;
  153.     void setTextFormat(Qt::TextFormat format);
  154.     static StandardButton information(QWidget *parent, const QString &title,
  155.          const QString &text, StandardButtons buttons = Ok,
  156.          StandardButton defaultButton = NoButton);
  157.     static StandardButton question(QWidget *parent, const QString &title,
  158.          const QString &text, StandardButtons buttons = Ok,
  159.          StandardButton defaultButton = NoButton);
  160.     static StandardButton warning(QWidget *parent, const QString &title,
  161.          const QString &text, StandardButtons buttons = Ok,
  162.          StandardButton defaultButton = NoButton);
  163.     static StandardButton critical(QWidget *parent, const QString &title,
  164.          const QString &text, StandardButtons buttons = Ok,
  165.          StandardButton defaultButton = NoButton);
  166.     static void about(QWidget *parent, const QString &title, const QString &text);
  167.     static void aboutQt(QWidget *parent, const QString &title = QString());
  168.     QSize sizeHint() const;
  169.     // the following functions are obsolete:
  170.     QMessageBox(const QString &title, const QString &text, Icon icon,
  171.                   int button0, int button1, int button2,
  172.                   QWidget *parent = 0,
  173.                   Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
  174.     static int information(QWidget *parent, const QString &title,
  175.                            const QString& text,
  176.                            int button0, int button1 = 0, int button2 = 0);
  177.     static int information(QWidget *parent, const QString &title,
  178.                            const QString& text,
  179.                            const QString& button0Text,
  180.                            const QString& button1Text = QString(),
  181.                            const QString& button2Text = QString(),
  182.                            int defaultButtonNumber = 0,
  183.                            int escapeButtonNumber = -1);
  184.     inline static StandardButton information(QWidget *parent, const QString &title,
  185.                                   const QString& text,
  186.                                   StandardButton button0, StandardButton button1 = NoButton)
  187.     { return information(parent, title, text, StandardButtons(button0), button1); }
  188.     static int question(QWidget *parent, const QString &title,
  189.                         const QString& text,
  190.                         int button0, int button1 = 0, int button2 = 0);
  191.     static int question(QWidget *parent, const QString &title,
  192.                         const QString& text,
  193.                         const QString& button0Text,
  194.                         const QString& button1Text = QString(),
  195.                         const QString& button2Text = QString(),
  196.                         int defaultButtonNumber = 0,
  197.                         int escapeButtonNumber = -1);
  198.     inline static int question(QWidget *parent, const QString &title,
  199.                                const QString& text,
  200.                                StandardButton button0, StandardButton button1)
  201.     { return question(parent, title, text, StandardButtons(button0), button1); }
  202.     static int warning(QWidget *parent, const QString &title,
  203.                        const QString& text,
  204.                        int button0, int button1, int button2 = 0);
  205.     static int warning(QWidget *parent, const QString &title,
  206.                        const QString& text,
  207.                        const QString& button0Text,
  208.                        const QString& button1Text = QString(),
  209.                        const QString& button2Text = QString(),
  210.                        int defaultButtonNumber = 0,
  211.                        int escapeButtonNumber = -1);
  212.     inline static int warning(QWidget *parent, const QString &title,
  213.                               const QString& text,
  214.                               StandardButton button0, StandardButton button1)
  215.     { return warning(parent, title, text, StandardButtons(button0), button1); }
  216.     static int critical(QWidget *parent, const QString &title,
  217.                         const QString& text,
  218.                         int button0, int button1, int button2 = 0);
  219.     static int critical(QWidget *parent, const QString &title,
  220.                         const QString& text,
  221.                         const QString& button0Text,
  222.                         const QString& button1Text = QString(),
  223.                         const QString& button2Text = QString(),
  224.                         int defaultButtonNumber = 0,
  225.                         int escapeButtonNumber = -1);
  226.     inline static int critical(QWidget *parent, const QString &title,
  227.                                const QString& text,
  228.                                StandardButton button0, StandardButton button1)
  229.     { return critical(parent, title, text, StandardButtons(button0), button1); }
  230.     QString buttonText(int button) const;
  231.     void setButtonText(int button, const QString &text);
  232.     QString informativeText() const;
  233.     void setInformativeText(const QString &text);
  234. #ifndef QT_NO_TEXTEDIT
  235.     QString detailedText() const;
  236.     void setDetailedText(const QString &text);
  237. #endif
  238.     void setWindowTitle(const QString &title);
  239.     void setWindowModality(Qt::WindowModality windowModality);
  240. #ifdef QT3_SUPPORT
  241.     QT3_SUPPORT_CONSTRUCTOR QMessageBox(const QString &title, const QString &text, Icon icon,
  242.                                           int button0, int button1, int button2,
  243.                                           QWidget *parent, const char *name, bool modal,
  244.                                            Qt::WindowFlags f =  Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
  245.     QT3_SUPPORT_CONSTRUCTOR QMessageBox(QWidget *parent, const char *name);
  246.     static QT3_SUPPORT QPixmap standardIcon(Icon icon, Qt::GUIStyle);
  247.     static QT3_SUPPORT int message(const QString &title,
  248.                                    const QString& text,
  249.                                    const QString& buttonText=QString(),
  250.                                    QWidget *parent = 0, const char * = 0) {
  251.         return QMessageBox::information(parent, title, text,
  252.                                         buttonText.isEmpty() ? tr("OK") : buttonText) == 0;
  253.     }
  254.     static QT3_SUPPORT bool query(const QString &title,
  255.                                   const QString& text,
  256.                                   const QString& yesButtonText = QString(),
  257.                                   const QString& noButtonText = QString(),
  258.                                   QWidget *parent = 0, const char * = 0) {
  259.         return QMessageBox::information(parent, title, text,
  260.                                         yesButtonText.isEmpty() ? tr("OK") : yesButtonText,
  261.                                         noButtonText) == 0;
  262.     }
  263. #endif
  264.     static QPixmap standardIcon(Icon icon);
  265. #ifdef qdoc
  266. public Q_SLOTS:
  267.     int exec();
  268. #endif
  269. protected:
  270.     bool event(QEvent *e);
  271.     void resizeEvent(QResizeEvent *event);
  272.     void showEvent(QShowEvent *event);
  273.     void closeEvent(QCloseEvent *event);
  274.     void keyPressEvent(QKeyEvent *event);
  275.     void changeEvent(QEvent *event);
  276. private:
  277.     Q_PRIVATE_SLOT(d_func(), void _q_buttonClicked(QAbstractButton *))
  278.     Q_DISABLE_COPY(QMessageBox)
  279.     Q_DECLARE_PRIVATE(QMessageBox)
  280. };
  281. Q_DECLARE_OPERATORS_FOR_FLAGS(QMessageBox::StandardButtons)
  282. #define QT_REQUIRE_VERSION(argc, argv, str) { QString s = QString::fromLatin1(str);
  283. QString sq = QString::fromLatin1(qVersion()); 
  284. if ((sq.section(QChar::fromLatin1('.'),0,0).toInt()<<16)+
  285. (sq.section(QChar::fromLatin1('.'),1,1).toInt()<<8)+
  286. sq.section(QChar::fromLatin1('.'),2,2).toInt()<(s.section(QChar::fromLatin1('.'),0,0).toInt()<<16)+
  287. (s.section(QChar::fromLatin1('.'),1,1).toInt()<<8)+
  288. s.section(QChar::fromLatin1('.'),2,2).toInt()) { 
  289. if (!qApp){ 
  290.     new QApplication(argc,argv); 
  291. QString s = QApplication::tr("Executable '%1' requires Qt "
  292.  "%2, found Qt %3.").arg(qAppName()).arg(QString::fromLatin1(
  293. str)).arg(QString::fromLatin1(qVersion())); QMessageBox::critical(0, QApplication::tr(
  294. "Incompatible Qt Library Error"), s, QMessageBox::Abort, 0); qFatal(s.toLatin1().data()); }}
  295. #endif // QT_NO_MESSAGEBOX
  296. QT_END_NAMESPACE
  297. QT_END_HEADER
  298. #endif // QMESSAGEBOX_H