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

系统编程

开发平台:

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 QDYNAMICTOOLBAR_H
  38. #define QDYNAMICTOOLBAR_H
  39. #include <QtGui/qwidget.h>
  40. QT_BEGIN_HEADER
  41. QT_BEGIN_NAMESPACE
  42. QT_MODULE(Gui)
  43. #ifndef QT_NO_TOOLBAR
  44. class QToolBarPrivate;
  45. class QAction;
  46. class QIcon;
  47. class QMainWindow;
  48. class QStyleOptionToolBar;
  49. class Q_GUI_EXPORT QToolBar : public QWidget
  50. {
  51.     Q_OBJECT
  52.     Q_PROPERTY(bool movable READ isMovable WRITE setMovable
  53.                DESIGNABLE (qobject_cast<QMainWindow *>(parentWidget()) != 0)
  54.                NOTIFY movableChanged)
  55.     Q_PROPERTY(Qt::ToolBarAreas allowedAreas READ allowedAreas WRITE setAllowedAreas
  56.                DESIGNABLE (qobject_cast<QMainWindow *>(parentWidget()) != 0)
  57.                NOTIFY allowedAreasChanged)
  58.     Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation
  59.                DESIGNABLE (qobject_cast<QMainWindow *>(parentWidget()) == 0)
  60.                NOTIFY orientationChanged)
  61.     Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize NOTIFY iconSizeChanged)
  62.     Q_PROPERTY(Qt::ToolButtonStyle toolButtonStyle READ toolButtonStyle WRITE setToolButtonStyle
  63.                NOTIFY toolButtonStyleChanged)
  64.     Q_PROPERTY(bool floating READ isFloating)
  65.     Q_PROPERTY(bool floatable READ isFloatable WRITE setFloatable)
  66. public:
  67.     explicit QToolBar(const QString &title, QWidget *parent = 0);
  68.     explicit QToolBar(QWidget *parent = 0);
  69.     ~QToolBar();
  70.     void setMovable(bool movable);
  71.     bool isMovable() const;
  72.     void setAllowedAreas(Qt::ToolBarAreas areas);
  73.     Qt::ToolBarAreas allowedAreas() const;
  74.     inline bool isAreaAllowed(Qt::ToolBarArea area) const
  75.     { return (allowedAreas() & area) == area; }
  76.     void setOrientation(Qt::Orientation orientation);
  77.     Qt::Orientation orientation() const;
  78.     void clear();
  79. #ifdef Q_NO_USING_KEYWORD
  80.     inline void addAction(QAction *action)
  81.     { QWidget::addAction(action); }
  82. #else
  83.     using QWidget::addAction;
  84. #endif
  85.     QAction *addAction(const QString &text);
  86.     QAction *addAction(const QIcon &icon, const QString &text);
  87.     QAction *addAction(const QString &text, const QObject *receiver, const char* member);
  88.     QAction *addAction(const QIcon &icon, const QString &text,
  89.        const QObject *receiver, const char* member);
  90.     QAction *addSeparator();
  91.     QAction *insertSeparator(QAction *before);
  92.     QAction *addWidget(QWidget *widget);
  93.     QAction *insertWidget(QAction *before, QWidget *widget);
  94.     QRect actionGeometry(QAction *action) const;
  95.     QAction *actionAt(const QPoint &p) const;
  96.     inline QAction *actionAt(int x, int y) const;
  97.     QAction *toggleViewAction() const;
  98.     QSize iconSize() const;
  99.     Qt::ToolButtonStyle toolButtonStyle() const;
  100.     QWidget *widgetForAction(QAction *action) const;
  101.     bool isFloatable() const;
  102.     void setFloatable(bool floatable);
  103.     bool isFloating() const;
  104. public Q_SLOTS:
  105.     void setIconSize(const QSize &iconSize);
  106.     void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle);
  107. Q_SIGNALS:
  108.     void actionTriggered(QAction *action);
  109.     void movableChanged(bool movable);
  110.     void allowedAreasChanged(Qt::ToolBarAreas allowedAreas);
  111.     void orientationChanged(Qt::Orientation orientation);
  112.     void iconSizeChanged(const QSize &iconSize);
  113.     void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle);
  114. protected:
  115.     void actionEvent(QActionEvent *event);
  116.     void changeEvent(QEvent *event);
  117.     void childEvent(QChildEvent *event);
  118.     void paintEvent(QPaintEvent *event);
  119.     void resizeEvent(QResizeEvent *event);
  120.     bool event(QEvent *event);
  121.     void initStyleOption(QStyleOptionToolBar *option) const;
  122. #ifdef QT3_SUPPORT
  123. public:
  124.     QT3_SUPPORT_CONSTRUCTOR QToolBar(QWidget *parent, const char *name);
  125.     inline QT3_SUPPORT void setLabel(const QString &label)
  126.     { setWindowTitle(label); }
  127.     inline QT3_SUPPORT QString label() const
  128.     { return windowTitle(); }
  129. #endif
  130. private:
  131.     Q_DECLARE_PRIVATE(QToolBar)
  132.     Q_DISABLE_COPY(QToolBar)
  133.     Q_PRIVATE_SLOT(d_func(), void _q_toggleView(bool))
  134.     Q_PRIVATE_SLOT(d_func(), void _q_updateIconSize(const QSize &))
  135.     Q_PRIVATE_SLOT(d_func(), void _q_updateToolButtonStyle(Qt::ToolButtonStyle))
  136.     Q_PRIVATE_SLOT(d_func(), void _q_waitForPopup())
  137.     friend class QMainWindow;
  138.     friend class QMainWindowLayout;
  139.     friend class QToolBarLayout;
  140.     friend class QToolBarAreaLayout;
  141. };
  142. inline QAction *QToolBar::actionAt(int ax, int ay) const
  143. { return actionAt(QPoint(ax, ay)); }
  144. #endif // QT_NO_TOOLBAR
  145. QT_END_NAMESPACE
  146. QT_END_HEADER
  147. #endif // QDYNAMICTOOLBAR_H