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

系统编程

开发平台:

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 QAPPLICATION_H
  38. #define QAPPLICATION_H
  39. #include <QtCore/qcoreapplication.h>
  40. #include <QtGui/qwindowdefs.h>
  41. #include <QtCore/qpoint.h>
  42. #include <QtCore/qsize.h>
  43. #include <QtGui/qcursor.h>
  44. #ifdef QT_INCLUDE_COMPAT
  45. # include <QtGui/qdesktopwidget.h>
  46. #endif
  47. #ifdef QT3_SUPPORT
  48. # include <QtGui/qwidget.h>
  49. # include <QtGui/qpalette.h>
  50. #endif
  51. #ifdef Q_WS_QWS
  52. # include <QtGui/qrgb.h>
  53. # include <QtGui/qtransportauth_qws.h>
  54. #endif
  55. QT_BEGIN_HEADER
  56. QT_BEGIN_NAMESPACE
  57. QT_MODULE(Gui)
  58. class QSessionManager;
  59. class QDesktopWidget;
  60. class QStyle;
  61. class QEventLoop;
  62. class QIcon;
  63. class QInputContext;
  64. template <typename T> class QList;
  65. class QLocale;
  66. #if defined(Q_WS_QWS)
  67. class QDecoration;
  68. #endif
  69. class QApplication;
  70. class QApplicationPrivate;
  71. #if defined(qApp)
  72. #undef qApp
  73. #endif
  74. #define qApp (static_cast<QApplication *>(QCoreApplication::instance()))
  75. class Q_GUI_EXPORT QApplication : public QCoreApplication
  76. {
  77.     Q_OBJECT
  78.     Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection)
  79.     Q_PROPERTY(QIcon windowIcon READ windowIcon WRITE setWindowIcon)
  80.     Q_PROPERTY(int cursorFlashTime READ cursorFlashTime WRITE setCursorFlashTime)
  81.     Q_PROPERTY(int doubleClickInterval  READ doubleClickInterval WRITE setDoubleClickInterval)
  82.     Q_PROPERTY(int keyboardInputInterval READ keyboardInputInterval WRITE setKeyboardInputInterval)
  83. #ifndef QT_NO_WHEELEVENT
  84.     Q_PROPERTY(int wheelScrollLines  READ wheelScrollLines WRITE setWheelScrollLines)
  85. #endif
  86.     Q_PROPERTY(QSize globalStrut READ globalStrut WRITE setGlobalStrut)
  87.     Q_PROPERTY(int startDragTime  READ startDragTime WRITE setStartDragTime)
  88.     Q_PROPERTY(int startDragDistance  READ startDragDistance WRITE setStartDragDistance)
  89.     Q_PROPERTY(bool quitOnLastWindowClosed  READ quitOnLastWindowClosed WRITE setQuitOnLastWindowClosed)
  90. #ifndef QT_NO_STYLE_STYLESHEET
  91.     Q_PROPERTY(QString styleSheet READ styleSheet WRITE setStyleSheet)
  92. #endif
  93. #ifdef Q_OS_WINCE
  94.     Q_PROPERTY(int autoMaximizeThreshold READ autoMaximizeThreshold WRITE setAutoMaximizeThreshold)
  95. #endif
  96. public:
  97.     enum Type { Tty, GuiClient, GuiServer };
  98. #ifndef qdoc
  99.     QApplication(int &argc, char **argv, int = QT_VERSION);
  100.     QApplication(int &argc, char **argv, bool GUIenabled, int = QT_VERSION);
  101.     QApplication(int &argc, char **argv, Type, int = QT_VERSION);
  102. #if defined(Q_WS_X11)
  103.     QApplication(Display* dpy, Qt::HANDLE visual = 0, Qt::HANDLE cmap = 0, int = QT_VERSION);
  104.     QApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap= 0, int = QT_VERSION);
  105. #endif
  106. #endif
  107.     virtual ~QApplication();
  108.     static Type type();
  109.     static QStyle *style();
  110.     static void setStyle(QStyle*);
  111.     static QStyle *setStyle(const QString&);
  112.     enum ColorSpec { NormalColor=0, CustomColor=1, ManyColor=2 };
  113.     static int colorSpec();
  114.     static void setColorSpec(int);
  115. #ifndef QT_NO_CURSOR
  116.     static QCursor *overrideCursor();
  117.     static void setOverrideCursor(const QCursor &);
  118.     static void changeOverrideCursor(const QCursor &);
  119.     static void restoreOverrideCursor();
  120. #endif
  121.     static QPalette palette();
  122.     static QPalette palette(const QWidget *);
  123.     static QPalette palette(const char *className);
  124.     static void setPalette(const QPalette &, const char* className = 0);
  125.     static QFont font();
  126.     static QFont font(const QWidget*);
  127.     static QFont font(const char *className);
  128.     static void setFont(const QFont &, const char* className = 0);
  129.     static QFontMetrics fontMetrics();
  130.     static void setWindowIcon(const QIcon &icon);
  131.     static QIcon windowIcon();
  132. #ifdef QT3_SUPPORT
  133.     static QT3_SUPPORT QWidget *mainWidget();
  134.     static QT3_SUPPORT void setMainWidget(QWidget *);
  135. #endif
  136.     static QWidgetList allWidgets();
  137.     static QWidgetList topLevelWidgets();
  138.     static QDesktopWidget *desktop();
  139.     static QWidget *activePopupWidget();
  140.     static QWidget *activeModalWidget();
  141. #ifndef QT_NO_CLIPBOARD
  142.     static QClipboard *clipboard();
  143. #endif
  144.     static QWidget *focusWidget();
  145.     static QWidget *activeWindow();
  146.     static void setActiveWindow(QWidget* act);
  147.     static QWidget *widgetAt(const QPoint &p);
  148.     static inline QWidget *widgetAt(int x, int y) { return widgetAt(QPoint(x, y)); }
  149.     static QWidget *topLevelAt(const QPoint &p);
  150.     static inline QWidget *topLevelAt(int x, int y)  { return topLevelAt(QPoint(x, y)); }
  151.     static void syncX();
  152.     static void beep();
  153.     static void alert(QWidget *widget, int duration = 0);
  154.     static Qt::KeyboardModifiers keyboardModifiers();
  155.     static Qt::MouseButtons mouseButtons();
  156.     static void setDesktopSettingsAware(bool);
  157.     static bool desktopSettingsAware();
  158.     static void setCursorFlashTime(int);
  159.     static int cursorFlashTime();
  160.     static void setDoubleClickInterval(int);
  161.     static int doubleClickInterval();
  162.     static void setKeyboardInputInterval(int);
  163.     static int keyboardInputInterval();
  164. #ifndef QT_NO_WHEELEVENT
  165.     static void setWheelScrollLines(int);
  166.     static int wheelScrollLines();
  167. #endif
  168.     static void setGlobalStrut(const QSize &);
  169.     static QSize globalStrut();
  170.     static void setStartDragTime(int ms);
  171.     static int startDragTime();
  172.     static void setStartDragDistance(int l);
  173.     static int startDragDistance();
  174.     static void setLayoutDirection(Qt::LayoutDirection direction);
  175.     static Qt::LayoutDirection layoutDirection();
  176.     static inline bool isRightToLeft() { return layoutDirection() == Qt::RightToLeft; }
  177.     static inline bool isLeftToRight() { return layoutDirection() == Qt::LeftToRight; }
  178.     static bool isEffectEnabled(Qt::UIEffect);
  179.     static void setEffectEnabled(Qt::UIEffect, bool enable = true);
  180. #if defined(Q_WS_MAC)
  181.     virtual bool macEventFilter(EventHandlerCallRef, EventRef);
  182. #endif
  183. #if defined(Q_WS_X11)
  184.     virtual bool x11EventFilter(XEvent *);
  185.     virtual int x11ClientMessage(QWidget*, XEvent*, bool passive_only);
  186.     int x11ProcessEvent(XEvent*);
  187. #endif
  188. #if defined(Q_WS_QWS)
  189.     virtual bool qwsEventFilter(QWSEvent *);
  190.     int qwsProcessEvent(QWSEvent*);
  191.     void qwsSetCustomColors(QRgb *colortable, int start, int numColors);
  192. #ifndef QT_NO_QWS_MANAGER
  193.     static QDecoration &qwsDecoration();
  194.     static void qwsSetDecoration(QDecoration *);
  195.     static QDecoration *qwsSetDecoration(const QString &decoration);
  196. #endif
  197. #endif
  198. #if defined(Q_WS_WIN)
  199.     void winFocus(QWidget *, bool);
  200.     static void winMouseButtonUp();
  201. #endif
  202. #ifndef QT_NO_SESSIONMANAGER
  203.     // session management
  204.     bool isSessionRestored() const;
  205.     QString sessionId() const;
  206.     QString sessionKey() const;
  207.     virtual void commitData(QSessionManager& sm);
  208.     virtual void saveState(QSessionManager& sm);
  209. #endif
  210.     void setInputContext(QInputContext *);
  211.     QInputContext *inputContext() const;
  212.     static QLocale keyboardInputLocale();
  213.     static Qt::LayoutDirection keyboardInputDirection();
  214.     static int exec();
  215.     bool notify(QObject *, QEvent *);
  216.     static void setQuitOnLastWindowClosed(bool quit);
  217.     static bool quitOnLastWindowClosed();
  218. #ifdef QT_KEYPAD_NAVIGATION
  219.     static void setKeypadNavigationEnabled(bool);
  220.     static bool keypadNavigationEnabled();
  221. #endif
  222. Q_SIGNALS:
  223.     void lastWindowClosed();
  224.     void focusChanged(QWidget *old, QWidget *now);
  225. #ifndef QT_NO_SESSIONMANAGER
  226.     void commitDataRequest(QSessionManager &sessionManager);
  227.     void saveStateRequest(QSessionManager &sessionManager);
  228. #endif
  229. public:
  230.     QString styleSheet() const;
  231. public Q_SLOTS:
  232. #ifndef QT_NO_STYLE_STYLESHEET
  233.     void setStyleSheet(const QString& sheet);
  234. #endif
  235. #ifdef Q_OS_WINCE
  236.     void setAutoMaximizeThreshold(const int threshold);
  237.     int autoMaximizeThreshold() const;
  238. #endif
  239.     static void closeAllWindows();
  240.     static void aboutQt();
  241. protected:
  242. #if defined(Q_WS_QWS)
  243.     void setArgs(int, char **);
  244. #endif
  245.     bool event(QEvent *);
  246.     bool compressEvent(QEvent *, QObject *receiver, QPostEventList *);
  247. #ifdef QT3_SUPPORT
  248. public:
  249.     static inline QT3_SUPPORT void setReverseLayout(bool b) { setLayoutDirection(b?Qt::RightToLeft:Qt::LeftToRight); }
  250.     static inline bool QT3_SUPPORT reverseLayout() { return layoutDirection() == Qt::RightToLeft; }
  251.     static QT3_SUPPORT Qt::Alignment horizontalAlignment(Qt::Alignment align);
  252.     typedef int ColorMode;
  253.     enum { NormalColors = NormalColor, CustomColors = CustomColor };
  254.     static inline QT3_SUPPORT ColorMode colorMode() { return static_cast<ColorMode>(colorSpec()); }
  255.     static inline QT3_SUPPORT void setColorMode(ColorMode mode) { setColorSpec(int(mode)); }
  256. #if defined(Q_OS_WIN32) || defined(Q_OS_CYGWIN)
  257.     static QT3_SUPPORT Qt::WindowsVersion winVersion() { return (Qt::WindowsVersion)QSysInfo::WindowsVersion; }
  258. #endif
  259. #if defined(Q_OS_MAC)
  260.     static QT3_SUPPORT Qt::MacintoshVersion macVersion() { return (Qt::MacintoshVersion)QSysInfo::MacintoshVersion; }
  261. #endif
  262. #  ifndef QT_NO_CURSOR
  263.     inline static  QT3_SUPPORT void setOverrideCursor(const QCursor &cursor, bool replace)
  264.     { if (replace) changeOverrideCursor(cursor); else setOverrideCursor(cursor); }
  265. #  endif
  266.     inline static QT3_SUPPORT bool hasGlobalMouseTracking() {return true;}
  267.     inline static QT3_SUPPORT void setGlobalMouseTracking(bool) {};
  268.     inline static QT3_SUPPORT void flushX() { flush(); }
  269.     static inline QT3_SUPPORT void setWinStyleHighlightColor(const QColor &c) {
  270.         QPalette p(palette());
  271.         p.setColor(QPalette::Highlight, c);
  272.         setPalette(p);
  273.     }
  274.     static inline QT3_SUPPORT const QColor &winStyleHighlightColor()
  275.         { return palette().color(QPalette::Active, QPalette::Highlight); }
  276.     static inline QT3_SUPPORT void setPalette(const QPalette &pal, bool, const char* className = 0)
  277.         { setPalette(pal, className); };
  278.     static inline QT3_SUPPORT void setFont(const QFont &font, bool, const char* className = 0)
  279.         { setFont(font, className); }
  280.     static inline QT3_SUPPORT QWidget *widgetAt(int x, int y, bool child)
  281.         { QWidget *w = widgetAt(x, y); return child ? w : (w ? w->window() : 0); }
  282.     static inline QT3_SUPPORT QWidget *widgetAt(const QPoint &p, bool child)
  283.         { QWidget *w = widgetAt(p); return child ? w : (w ? w->window() : 0); }
  284. #endif // QT3_SUPPORT
  285. #if defined(Q_INTERNAL_QAPP_SRC) || defined(qdoc)
  286.     QApplication(int &argc, char **argv);
  287.     QApplication(int &argc, char **argv, bool GUIenabled);
  288.     QApplication(int &argc, char **argv, Type);
  289. #if defined(Q_WS_X11)
  290.     QApplication(Display* dpy, Qt::HANDLE visual = 0, Qt::HANDLE cmap = 0);
  291.     QApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap= 0);
  292. #endif
  293. #endif
  294. private:
  295.     Q_DISABLE_COPY(QApplication)
  296.     Q_DECLARE_PRIVATE(QApplication)
  297.     friend class QWidget;
  298.     friend class QWidgetPrivate;
  299.     friend class QETWidget;
  300.     friend class Q3AccelManager;
  301.     friend class QTranslator;
  302.     friend class QWidgetAnimator;
  303. #ifndef QT_NO_SHORTCUT
  304.     friend class QShortcut;
  305. #endif
  306.     friend class QAction;
  307. #if defined(Q_WS_QWS)
  308.     friend class QInputContext;
  309.     friend class QWSDirectPainterSurface;
  310.     friend class QDirectPainter;
  311.     friend class QDirectPainterPrivate;
  312. #endif
  313. #if defined(Q_WS_MAC) || defined(Q_WS_X11)
  314.     Q_PRIVATE_SLOT(d_func(), void _q_alertTimeOut())
  315. #endif
  316. };
  317. QT_END_NAMESPACE
  318. QT_END_HEADER
  319. #endif // QAPPLICATION_H