diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-12-18 12:24:56 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-17 14:37:33 +0100 |
commit | 742a7a0bd18d4ec23288b132a0e190235bff0547 (patch) | |
tree | 0935bcbedd0d07349b092706557767cfc473d350 /src/quickwidgets/qquickwidget.h | |
parent | e6a5e693a5abeab1a1634b71da33c9c93e2e7b98 (diff) |
Introducing QQuickWidget
Renders into an FBO, and provides a texture that is
composed by the QPA/widget kernel compositor.
Also introducing QQuickRenderControl, which is private
API for now.
Change-Id: I710c16e1506124a17f91e87344496471803a448b
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Diffstat (limited to 'src/quickwidgets/qquickwidget.h')
-rw-r--r-- | src/quickwidgets/qquickwidget.h | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/src/quickwidgets/qquickwidget.h b/src/quickwidgets/qquickwidget.h new file mode 100644 index 0000000000..f191a2d253 --- /dev/null +++ b/src/quickwidgets/qquickwidget.h @@ -0,0 +1,127 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtQuick module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQUICKWIDGET_H +#define QQUICKWIDGET_H + +#include <QtWidgets/qwidget.h> +#include <QtQuick/qquickwindow.h> +#include <QtCore/qurl.h> +#include <QtQml/qqmldebug.h> +#include <QtQuickWidgets/qtquickwidgetsglobal.h> + +QT_BEGIN_NAMESPACE + +class QQmlEngine; +class QQmlContext; +class QQmlError; +class QQuickItem; +class QQmlComponent; + +class QQuickWidgetPrivate; +class Q_QUICKWIDGETS_EXPORT QQuickWidget : public QWidget +{ + Q_OBJECT + Q_PROPERTY(ResizeMode resizeMode READ resizeMode WRITE setResizeMode) + Q_PROPERTY(Status status READ status NOTIFY statusChanged) + Q_PROPERTY(QUrl source READ source WRITE setSource DESIGNABLE true) + Q_ENUMS(ResizeMode Status) +public: + explicit QQuickWidget(QWidget *parent = 0); + QQuickWidget(QQmlEngine* engine, QWidget *parent); + QQuickWidget(const QUrl &source, QWidget *parent = 0); + virtual ~QQuickWidget(); + + QUrl source() const; + + QQmlEngine* engine() const; + QQmlContext* rootContext() const; + + QQuickItem *rootObject() const; + + enum ResizeMode { SizeViewToRootObject, SizeRootObjectToView }; + ResizeMode resizeMode() const; + void setResizeMode(ResizeMode); + + enum Status { Null, Ready, Loading, Error }; + Status status() const; + + QList<QQmlError> errors() const; + + QSize sizeHint() const; + QSize initialSize() const; + +public Q_SLOTS: + void setSource(const QUrl&); + void setContent(const QUrl& url, QQmlComponent *component, QObject *item); + +Q_SIGNALS: + void statusChanged(QQuickWidget::Status); + +private Q_SLOTS: + void continueExecute(); + void createFramebufferObject(); + void destroyFramebufferObject(); + void triggerUpdate(); + +protected: + virtual void resizeEvent(QResizeEvent *); + virtual void timerEvent(QTimerEvent*); + + virtual void keyPressEvent(QKeyEvent *); + virtual void keyReleaseEvent(QKeyEvent *); + virtual void mousePressEvent(QMouseEvent *); + virtual void mouseReleaseEvent(QMouseEvent *); + virtual void mouseMoveEvent(QMouseEvent *); + + virtual void showEvent(QShowEvent *); + virtual void hideEvent(QHideEvent *); + + bool event(QEvent *); + +private: + Q_DISABLE_COPY(QQuickWidget) + Q_DECLARE_PRIVATE(QQuickWidget) +}; + +QT_END_NAMESPACE + +#endif // QQuickWidget_H |