summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.qmake.conf2
-rw-r--r--examples/activeqt/activeqt.pro7
-rw-r--r--examples/activeqt/mediaplayer/doc/images/activeqt-mediaplayer-example.jpgbin0 -> 48753 bytes
-rw-r--r--examples/activeqt/mediaplayer/doc/src/mediaplayer.qdoc87
-rw-r--r--examples/activeqt/mediaplayer/main.cpp193
-rw-r--r--examples/activeqt/mediaplayer/mainwindow.ui147
-rw-r--r--examples/activeqt/mediaplayer/mediaaxwidget.h (renamed from examples/activeqt/webbrowser/webaxwidget.h)21
-rw-r--r--examples/activeqt/mediaplayer/mediaplayer.pro (renamed from examples/activeqt/webbrowser/webbrowser.pro)5
-rw-r--r--examples/activeqt/webbrowser/doc/images/activeqt-webbrowser-example.pngbin45199 -> 0 bytes
-rw-r--r--examples/activeqt/webbrowser/doc/src/webbrowser.qdoc73
-rw-r--r--examples/activeqt/webbrowser/images/back.pngbin1010 -> 0 bytes
-rw-r--r--examples/activeqt/webbrowser/images/forward.pngbin1008 -> 0 bytes
-rw-r--r--examples/activeqt/webbrowser/images/go.pngbin224 -> 0 bytes
-rw-r--r--examples/activeqt/webbrowser/images/home.pngbin1235 -> 0 bytes
-rw-r--r--examples/activeqt/webbrowser/images/refresh.pngbin222 -> 0 bytes
-rw-r--r--examples/activeqt/webbrowser/images/search.pngbin938 -> 0 bytes
-rw-r--r--examples/activeqt/webbrowser/images/stop.pngbin216 -> 0 bytes
-rw-r--r--examples/activeqt/webbrowser/main.cpp359
-rw-r--r--examples/activeqt/webbrowser/mainwindow.ui290
-rw-r--r--examples/activeqt/webbrowser/webbrowser.qrc11
-rw-r--r--src/activeqt/container/qaxbase.cpp6
-rw-r--r--src/activeqt/container/qaxbase.h6
-rw-r--r--src/activeqt/container/qaxobject.h20
-rw-r--r--src/activeqt/container/qaxscript.h6
-rw-r--r--src/activeqt/container/qaxselect.h2
-rw-r--r--src/activeqt/container/qaxwidget.cpp4
-rw-r--r--src/activeqt/container/qaxwidget.h32
-rw-r--r--src/activeqt/control/qaxaggregated.h6
-rw-r--r--src/activeqt/control/qaxfactory.h54
-rw-r--r--src/activeqt/control/qaxserverbase.cpp6
-rw-r--r--src/activeqt/doc/src/activeqt-index.qdoc2
-rw-r--r--src/activeqt/doc/src/qtaxcontainer.qdoc2
-rw-r--r--src/activeqt/shared/qaxtypes.cpp10
-rw-r--r--src/activeqt/shared/qaxutils.cpp8
-rw-r--r--tests/manual/testcontrol/main.cpp2
-rw-r--r--tools/dumpcpp/main.cpp4
-rw-r--r--tools/testcon/mainwindow.cpp12
-rw-r--r--tools/testcon/mainwindow.h2
38 files changed, 533 insertions, 846 deletions
diff --git a/.qmake.conf b/.qmake.conf
index 0338efe..dc68d38 100644
--- a/.qmake.conf
+++ b/.qmake.conf
@@ -1,3 +1,3 @@
load(qt_build_config)
-MODULE_VERSION = 5.10.1
+MODULE_VERSION = 5.11.0
diff --git a/examples/activeqt/activeqt.pro b/examples/activeqt/activeqt.pro
index 97b22bd..6f189bc 100644
--- a/examples/activeqt/activeqt.pro
+++ b/examples/activeqt/activeqt.pro
@@ -6,10 +6,9 @@ SUBDIRS += comapp \
simple \
wrapper
-contains(QT_CONFIG, shared):SUBDIRS += webbrowser
+contains(QT_CONFIG, shared):SUBDIRS += mediaplayer
contains(QT_CONFIG, opengl):!contains(QT_CONFIG, opengles2): SUBDIRS += opengl
qtHaveModule(quickcontrols2):SUBDIRS += simpleqml
-# For now only the contain examples with mingw, for the others you need
-# an IDL compiler
-mingw:SUBDIRS = webbrowser
+# Other examples need an IDL compiler
+mingw:SUBDIRS = mediaplayer
diff --git a/examples/activeqt/mediaplayer/doc/images/activeqt-mediaplayer-example.jpg b/examples/activeqt/mediaplayer/doc/images/activeqt-mediaplayer-example.jpg
new file mode 100644
index 0000000..4839242
--- /dev/null
+++ b/examples/activeqt/mediaplayer/doc/images/activeqt-mediaplayer-example.jpg
Binary files differ
diff --git a/examples/activeqt/mediaplayer/doc/src/mediaplayer.qdoc b/examples/activeqt/mediaplayer/doc/src/mediaplayer.qdoc
new file mode 100644
index 0000000..6043a6a
--- /dev/null
+++ b/examples/activeqt/mediaplayer/doc/src/mediaplayer.qdoc
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** 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 The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example activeqt/mediaplayer
+ \title Media Player Example (ActiveQt)
+
+ \brief The Media Player example uses the Microsoft Media Player
+ ActiveX control to implement a functional media player application.
+
+ \image activeqt-mediaplayer-example.jpg
+
+ \e {Media Player} demonstrates how a Qt application can communicate with
+ embedded ActiveX controls using signals, slots, and the \c dynamicCall()
+ function.
+
+ \quotefromfile activeqt/mediaplayer/main.cpp
+ \skipto class MainWindow
+ \printuntil /^\}/
+
+ The \c MainWindow class declares a \c QMainWindow based user interface,
+ using the \c Ui::MainWindow class created by Qt Designer. A number
+ of slots are implemented to handle events from user interface elements,
+ including the \c mediaPlayer object, which is a QAxWidget hosting
+ the Microsoft Media Player ActiveX control.
+
+ \quotefromfile activeqt/mediaplayer/main.cpp
+ \skipto MainWindow::MainWindow()
+ \printuntil /^\}/
+
+ The constructor initializes the user interface, restores a previously
+ saved window geometry, and uses the \c dynamicCall() function to invoke
+ the APIs implemented by the Microsoft Media Player ActiveX control,
+ to set initial configuration parameters.
+
+ \quotefromfile activeqt/mediaplayer/main.cpp
+ \skipto MainWindow::on_mediaPlayer_PlayStateChange
+ \printuntil /^\}/
+
+ The \c on_mediaPlayer_PlayStateChange slot handles the signal emitted
+ by the \c mediaPlayer object when its state changes.
+
+ \quotefromfile activeqt/mediaplayer/main.cpp
+ \skipto MainWindow::openMedia
+ \printuntil /^\}/
+
+ The \c openMedia() function allows a media file to be opened by using
+ the \c dynamicCall() function to set the URL property in the ActiveX
+ control, which causes the media file to be loaded and played.
+
+ \quotefromfile activeqt/mediaplayer/main.cpp
+ \skipto int main
+ \printuntil /^\}/
+
+ The \c main() function starts the application using standard Qt APIs
+ and uses an optional command line argument as the name of a media
+ file to be loaded by the player.
+
+ To build the example, you must first build the QAxContainer
+ library. Then run your make tool in
+ \c examples/activeqt/mediaplayer and run the resulting
+ \c mediaplayer.exe.
+*/
diff --git a/examples/activeqt/mediaplayer/main.cpp b/examples/activeqt/mediaplayer/main.cpp
new file mode 100644
index 0000000..c20f262
--- /dev/null
+++ b/examples/activeqt/mediaplayer/main.cpp
@@ -0,0 +1,193 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** 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 The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QApplication>
+#include <QMessageBox>
+#include <QMainWindow>
+#include <QDesktopWidget>
+#include <QVariant>
+#include <QSettings>
+#include <QFileDialog>
+#include <QCommandLineParser>
+
+#include "ui_mainwindow.h"
+
+static const char geometryKey[] = "Geometry";
+
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+public:
+ MainWindow();
+ ~MainWindow();
+ void openMedia(const QString &mediaUrl);
+
+public slots:
+ void on_mediaPlayer_PlayStateChange(int newState);
+ void on_actionOpen_triggered();
+ void on_actionExit_triggered();
+ void on_actionAbout_triggered();
+ void on_actionAboutQt_triggered();
+
+private:
+ void updateWindowTitle(const QString &state);
+ Ui::MainWindow m_ui;
+};
+
+MainWindow::MainWindow()
+{
+ m_ui.setupUi(this);
+
+ QSettings settings(QSettings::IniFormat, QSettings::UserScope,
+ QCoreApplication::organizationName(), QCoreApplication::applicationName());
+
+ const QByteArray restoredGeometry = settings.value(QLatin1String(geometryKey)).toByteArray();
+ if (restoredGeometry.isEmpty() || !restoreGeometry(restoredGeometry)) {
+ const QRect availableGeometry = QApplication::desktop()->availableGeometry(this);
+ const QSize size = (availableGeometry.size() * 4) / 5;
+ resize(size);
+ move(availableGeometry.center() - QPoint(size.width(), size.height()) / 2);
+ }
+
+ m_ui.mediaPlayer->dynamicCall("enableContextMenu", false);
+ m_ui.mediaPlayer->dynamicCall("stretchToFit", true);
+ updateWindowTitle("");
+}
+
+MainWindow::~MainWindow()
+{
+ QSettings settings(QSettings::IniFormat, QSettings::UserScope,
+ QCoreApplication::organizationName(), QCoreApplication::applicationName());
+ settings.setValue(QLatin1String(geometryKey), saveGeometry());
+}
+
+void MainWindow::on_mediaPlayer_PlayStateChange(int newState)
+{
+ static const QHash<int, const char *> stateMapping {
+ {1, "Stopped"},
+ {2, "Paused"},
+ {3, "Playing"},
+ {4, "Scanning Forwards"},
+ {5, "Scanning Backwards"},
+ {6, "Buffering"},
+ {7, "Waiting"},
+ {8, "Media Ended"},
+ {9, "Transitioning"},
+ {10, "Ready"},
+ {11, "Reconnecting"},
+ };
+ const char *stateStr = stateMapping.value(newState, "");
+ updateWindowTitle(tr(stateStr));
+}
+
+void MainWindow::on_actionOpen_triggered()
+{
+ QFileDialog fileDialog(this, tr("Open File"));
+ fileDialog.setAcceptMode(QFileDialog::AcceptOpen);
+ fileDialog.setFileMode(QFileDialog::ExistingFile);
+ fileDialog.setMimeTypeFilters({ "application/octet-stream", "video/x-msvideo", "video/mp4", "audio/mpeg", "audio/mp4" });
+ if (fileDialog.exec() == QDialog::Accepted)
+ openMedia(fileDialog.selectedFiles().first());
+}
+
+void MainWindow::on_actionExit_triggered()
+{
+ QCoreApplication::quit();
+}
+
+void MainWindow::on_actionAbout_triggered()
+{
+ QMessageBox::about(this, tr("About Media Player"),
+ tr("This Example has been created using the ActiveQt integration into Qt Designer.\n"
+ "It demonstrates the use of QAxWidget to embed the Windows Media Player ActiveX\n"
+ "control into a Qt application."));
+}
+
+void MainWindow::on_actionAboutQt_triggered()
+{
+ QMessageBox::aboutQt(this, tr("About Qt"));
+}
+
+void MainWindow::openMedia(const QString &mediaUrl)
+{
+ if (!mediaUrl.isEmpty())
+ m_ui.mediaPlayer->dynamicCall("URL", mediaUrl);
+}
+
+void MainWindow::updateWindowTitle(const QString &state)
+{
+ QString appName = QCoreApplication::applicationName();
+ QString title = state.isEmpty() ? appName :
+ QString("%1 (%2)").arg(appName, state);
+ setWindowTitle(title);
+}
+
+#include "main.moc"
+
+int main(int argc, char *argv[])
+{
+ QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+ QApplication app(argc, argv);
+ QCoreApplication::setApplicationVersion(QT_VERSION_STR);
+ QCoreApplication::setApplicationName(QLatin1String("Active Qt Media Player"));
+ QCoreApplication::setOrganizationName(QLatin1String("QtProject"));
+
+ MainWindow w;
+ QCommandLineParser parser;
+ parser.setApplicationDescription(QCoreApplication::applicationName());
+ parser.addHelpOption();
+ parser.addVersionOption();
+ parser.addPositionalArgument("file", "The media file to open.");
+ parser.process(app);
+ if (!parser.positionalArguments().isEmpty())
+ w.openMedia(parser.positionalArguments().constFirst());
+ w.show();
+ return app.exec();
+}
diff --git a/examples/activeqt/mediaplayer/mainwindow.ui b/examples/activeqt/mediaplayer/mainwindow.ui
new file mode 100644
index 0000000..b83d392
--- /dev/null
+++ b/examples/activeqt/mediaplayer/mainwindow.ui
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>794</width>
+ <height>599</height>
+ </rect>
+ </property>
+ <property name="acceptDrops">
+ <bool>true</bool>
+ </property>
+ <property name="windowTitle">
+ <string>Qt Media Player</string>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QHBoxLayout" name="unnamed">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QFrame" name="Frame">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Sunken</enum>
+ </property>
+ <layout class="QVBoxLayout" name="unnamed">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>1</number>
+ </property>
+ <property name="topMargin">
+ <number>1</number>
+ </property>
+ <property name="rightMargin">
+ <number>1</number>
+ </property>
+ <property name="bottomMargin">
+ <number>1</number>
+ </property>
+ <item>
+ <widget class="MediaAxWidget" name="mediaPlayer">
+ <property name="control" stdset="0">
+ <string>{6bf52a52-394a-11d3-b153-00c04f79faa6}</string>
+ </property>
+ <property name="sizePolicy" stdset="0">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QMenuBar" name="menubar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>794</width>
+ <height>21</height>
+ </rect>
+ </property>
+ <widget class="QMenu" name="PopupMenu">
+ <property name="title">
+ <string>&amp;File</string>
+ </property>
+ <addaction name="actionOpen"/>
+ <addaction name="actionExit"/>
+ </widget>
+ <widget class="QMenu" name="menuHelp">
+ <property name="title">
+ <string>&amp;Help</string>
+ </property>
+ <addaction name="actionAbout"/>
+ <addaction name="actionAboutQt"/>
+ </widget>
+ <addaction name="PopupMenu"/>
+ <addaction name="menuHelp"/>
+ </widget>
+ <action name="actionOpen">
+ <property name="text">
+ <string>&amp;Open</string>
+ </property>
+ </action>
+ <action name="actionExit">
+ <property name="text">
+ <string>E&amp;xit</string>
+ </property>
+ </action>
+ <action name="actionAbout">
+ <property name="text">
+ <string>&amp;About</string>
+ </property>
+ </action>
+ <action name="actionAboutQt">
+ <property name="text">
+ <string>About &amp;Qt</string>
+ </property>
+ </action>
+ <actiongroup name="FileNewGroup"/>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+ <customwidget>
+ <class>QAxWidget</class>
+ <extends>QWidget</extends>
+ <header>qaxwidget.h</header>
+ </customwidget>
+ <customwidget>
+ <class>MediaAxWidget</class>
+ <extends>QAxWidget</extends>
+ <header>mediaaxwidget.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/activeqt/webbrowser/webaxwidget.h b/examples/activeqt/mediaplayer/mediaaxwidget.h
index 9a15a72..a57ca05 100644
--- a/examples/activeqt/webbrowser/webaxwidget.h
+++ b/examples/activeqt/mediaplayer/mediaaxwidget.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2015 The Qt Company Ltd.
+** Copyright (C) 2017 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
@@ -48,28 +48,29 @@
**
****************************************************************************/
-#ifndef WEBAXWIDGET_H
-#define WEBAXWIDGET_H
+#ifndef MEDIAAXWIDGET_H
+#define MEDIAAXWIDGET_H
#include <ActiveQt/QAxWidget>
-#include "windows.h"
+#include <qt_windows.h>
-class WebAxWidget : public QAxWidget
+// Overrides the translateKeyEvent() function to pass keystrokes
+// to the Windows Media Player ActiveX control.
+class MediaAxWidget : public QAxWidget
{
public:
-
- WebAxWidget(QWidget *parent = nullptr, Qt::WindowFlags f = 0)
+ MediaAxWidget(QWidget *parent = nullptr, Qt::WindowFlags f = 0)
: QAxWidget(parent, f)
{
}
+
protected:
- bool translateKeyEvent(int message, int keycode) const Q_DECL_OVERRIDE
+ bool translateKeyEvent(int message, int keycode) const override
{
if (message >= WM_KEYFIRST && message <= WM_KEYLAST)
return true;
return QAxWidget::translateKeyEvent(message, keycode);
}
-
};
-#endif // WEBAXWIDGET_H
+#endif // MEDIAAXWIDGET_H
diff --git a/examples/activeqt/webbrowser/webbrowser.pro b/examples/activeqt/mediaplayer/mediaplayer.pro
index 76a791c..ad787a3 100644
--- a/examples/activeqt/webbrowser/webbrowser.pro
+++ b/examples/activeqt/mediaplayer/mediaplayer.pro
@@ -2,11 +2,10 @@ TEMPLATE = app
QT += widgets axcontainer
-HEADERS = webaxwidget.h
+HEADERS = mediaaxwidget.h
SOURCES = main.cpp
FORMS = mainwindow.ui
-RESOURCES += webbrowser.qrc
# install
-target.path = $$[QT_INSTALL_EXAMPLES]/activeqt/webbrowser
+target.path = $$[QT_INSTALL_EXAMPLES]/activeqt/mediaplayer
INSTALLS += target
diff --git a/examples/activeqt/webbrowser/doc/images/activeqt-webbrowser-example.png b/examples/activeqt/webbrowser/doc/images/activeqt-webbrowser-example.png
deleted file mode 100644
index 0bb451a..0000000
--- a/examples/activeqt/webbrowser/doc/images/activeqt-webbrowser-example.png
+++ /dev/null
Binary files differ
diff --git a/examples/activeqt/webbrowser/doc/src/webbrowser.qdoc b/examples/activeqt/webbrowser/doc/src/webbrowser.qdoc
deleted file mode 100644
index b8215bd..0000000
--- a/examples/activeqt/webbrowser/doc/src/webbrowser.qdoc
+++ /dev/null
@@ -1,73 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** 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 The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example activeqt/webbrowser
- \title Web Browser Example (ActiveQt)
-
- \brief The Web Browser example uses the Microsoft Web Browser
- ActiveX control to implement a fully functional Web Browser
- application. The user interface has been developed using the Qt
- Designer integration of the QAxWidget class.
-
- \image activeqt-webbrowser-example.png
-
- The code demonstrates how the Qt application can communicate
- with the embedded ActiveX controls using signals, slots and the
- dynamicCall() function.
-
- \snippet activeqt/webbrowser/main.cpp 0
-
- The \c MainWindow class declares a \c QMainWindow based user interface,
- using the \c Ui::MainWindow class generated by Qt Designer. A number
- of slots are implemented to handle events from the various user
- interface elements, including the \c WebBrowser object, which is a
- QAxWidget hosting the Microsoft Web Browser control.
-
- \snippet activeqt/webbrowser/main.cpp 1
-
- The constructor initializes the user interface, installs a
- progress bar on the status bar, and loads the bookmarks.
-
- \snippet activeqt/webbrowser/main.cpp 2
- Different slots handle the signals emitted by the WebBrowser object.
-
- Connections that don't require any coding, i.e. connecting the \c back
- action to the \c GoBack() slot, have already been made in Qt Designer.
-
- \snippet activeqt/webbrowser/main.cpp 3
- \snippet activeqt/webbrowser/main.cpp 4
-
- The rest of the implementation is not related to ActiveQt - the actions
- are handled by different slots, and the entry point function starts the
- application using standard Qt APIs.
-
- To build the example you must first build the QAxContainer
- library. Then run your make tool in \c
- examples/activeqt/webbrowser and run the resulting \c
- webbrowser.exe.
-*/
diff --git a/examples/activeqt/webbrowser/images/back.png b/examples/activeqt/webbrowser/images/back.png
deleted file mode 100644
index ca100f6..0000000
--- a/examples/activeqt/webbrowser/images/back.png
+++ /dev/null
Binary files differ
diff --git a/examples/activeqt/webbrowser/images/forward.png b/examples/activeqt/webbrowser/images/forward.png
deleted file mode 100644
index 833cbfa..0000000
--- a/examples/activeqt/webbrowser/images/forward.png
+++ /dev/null
Binary files differ
diff --git a/examples/activeqt/webbrowser/images/go.png b/examples/activeqt/webbrowser/images/go.png
deleted file mode 100644
index 8aaf835..0000000
--- a/examples/activeqt/webbrowser/images/go.png
+++ /dev/null
Binary files differ
diff --git a/examples/activeqt/webbrowser/images/home.png b/examples/activeqt/webbrowser/images/home.png
deleted file mode 100644
index 51dc56d..0000000
--- a/examples/activeqt/webbrowser/images/home.png
+++ /dev/null
Binary files differ
diff --git a/examples/activeqt/webbrowser/images/refresh.png b/examples/activeqt/webbrowser/images/refresh.png
deleted file mode 100644
index cd24b5f..0000000
--- a/examples/activeqt/webbrowser/images/refresh.png
+++ /dev/null
Binary files differ
diff --git a/examples/activeqt/webbrowser/images/search.png b/examples/activeqt/webbrowser/images/search.png
deleted file mode 100644
index 4f1e1ca..0000000
--- a/examples/activeqt/webbrowser/images/search.png
+++ /dev/null
Binary files differ
diff --git a/examples/activeqt/webbrowser/images/stop.png b/examples/activeqt/webbrowser/images/stop.png
deleted file mode 100644
index ded466c..0000000
--- a/examples/activeqt/webbrowser/images/stop.png
+++ /dev/null
Binary files differ
diff --git a/examples/activeqt/webbrowser/main.cpp b/examples/activeqt/webbrowser/main.cpp
deleted file mode 100644
index 6d6d6d5..0000000
--- a/examples/activeqt/webbrowser/main.cpp
+++ /dev/null
@@ -1,359 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** 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 The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** BSD License Usage
-** Alternatively, you may use this file under the terms of the BSD license
-** as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QApplication>
-#include <QMessageBox>
-#include <QProgressBar>
-#include <QLineEdit>
-#include <QLabel>
-#include <QStatusBar>
-#include <QMainWindow>
-#include <QDesktopWidget>
-#include <QAbstractEventDispatcher>
-#include <QSignalMapper>
-#include <QVariant>
-#include <QSettings>
-
-#include "ui_mainwindow.h"
-
-static const char qtUrl[] = "qt.io";
-static const char iWebBrowser2DocumentationUrl[] = "http://msdn.microsoft.com/en-us/library/aa752127%28v=vs.85%29.aspx";
-static const char versionKey[] = "Version";
-static const char geometryKey[] = "Geometry";
-
-struct Location {
- Location(const QString &t = QString(), const QString &a = QString()) : title(t), address(a) {}
-
- QString title;
- QString address;
-};
-
-Q_DECLARE_METATYPE(Location)
-
-static QList<Location> defaultBookmarks()
-{
- QList<Location> result;
- result.append(Location(QStringLiteral("Qt"), QLatin1String(qtUrl)));
- result.append(Location(QStringLiteral("Digia"), QStringLiteral("http://qt.digia.com/")));
- result.append(Location(QStringLiteral("IWebBrowser2 MSDN Documentation"), QLatin1String(iWebBrowser2DocumentationUrl)));
- return result;
-}
-
-static bool containsAddress(const QList<Location> &locations, const QString &address)
-{
- for (const Location &location : locations) {
- if (location.address == address)
- return true;
- }
- return false;
-}
-
-static inline Location locationFromAction(const QAction *action)
-{
- return action->data().value<Location>();
-}
-
-static QList<Location> readBookMarks(QSettings &settings)
-{
- QList<Location> result;
- if (const int count = settings.beginReadArray(QStringLiteral("Bookmarks"))) {
- const QString titleKey = QStringLiteral("title");
- const QString addressKey = QStringLiteral("address");
- for (int i = 0; i < count; ++i) {
- settings.setArrayIndex(i);
- result.append(Location(settings.value(titleKey).toString(),
- settings.value(addressKey).toString()));
- }
- }
- settings.endArray();
- return result;
-}
-
-static void saveBookMarks(const QList<Location> &bookmarks, QSettings &settings)
-{
- const int count = bookmarks.size();
- settings.beginWriteArray(QStringLiteral("Bookmarks"));
- const QString titleKey = QStringLiteral("title");
- const QString addressKey = QStringLiteral("address");
- for (int i = 0; i < count; ++i) {
- settings.setArrayIndex(i);
- settings.setValue(titleKey, bookmarks.at(i).title);
- settings.setValue(addressKey, bookmarks.at(i).address);
- }
- settings.endArray();
-}
-
-//! [0]
-class MainWindow : public QMainWindow, public Ui::MainWindow
-{
- Q_OBJECT
-public:
- explicit MainWindow();
- virtual ~MainWindow();
-
-public slots:
- void navigate(const QString &address);
- void on_WebBrowser_TitleChange(const QString &title);
- void on_WebBrowser_ProgressChange(int a, int b);
- void on_WebBrowser_CommandStateChange(int cmd, bool on);
- void on_WebBrowser_BeforeNavigate();
- void on_WebBrowser_NavigateComplete(const QString &address);
-
- void on_actionGo_triggered();
- void on_actionNewWindow_triggered();
- void on_actionAddBookmark_triggered();
- void on_actionAbout_triggered();
- void on_actionAboutQt_triggered();
- void on_actionFileClose_triggered();
-
-private:
- inline const QString address() const
- { return m_addressEdit->text().trimmed(); }
- QList<Location> bookmarks() const;
- QAction *addLocation(const Location &location, QMenu *menu);
- inline void addBookmark(const Location &location)
- { m_bookmarkActions << addLocation(location, BookmarksMenu); }
-
- QProgressBar *m_progressBar;
- QLineEdit *m_addressEdit;
- QList<QAction *> m_bookmarkActions;
- QList<QAction *> m_historyActions;
- QSignalMapper m_locationActionMapper;
-};
-//! [0] //! [1]
-
-MainWindow::MainWindow()
-{
- setupUi(this);
-
- m_addressEdit = new QLineEdit;
- tbAddress->insertWidget(actionGo, new QLabel(tr("Address")));
- tbAddress->insertWidget(actionGo, m_addressEdit);
-
- connect(m_addressEdit, SIGNAL(returnPressed()), actionGo, SLOT(trigger()));
-
- connect(actionBack, SIGNAL(triggered()), WebBrowser, SLOT(GoBack()));
- connect(actionForward, SIGNAL(triggered()), WebBrowser, SLOT(GoForward()));
- connect(actionStop, SIGNAL(triggered()), WebBrowser, SLOT(Stop()));
- connect(actionRefresh, SIGNAL(triggered()), WebBrowser, SLOT(Refresh()));
- connect(actionHome, SIGNAL(triggered()), WebBrowser, SLOT(GoHome()));
- connect(actionSearch, SIGNAL(triggered()), WebBrowser, SLOT(GoSearch()));
-
- m_progressBar = new QProgressBar(statusBar());
- m_progressBar->setTextVisible(false);
- m_progressBar->hide();
- statusBar()->addPermanentWidget(m_progressBar);
-
- connect(&m_locationActionMapper, QOverload<const QString &>::of(&QSignalMapper::mapped), this, &MainWindow::navigate);
-
- QSettings settings(QSettings::IniFormat, QSettings::UserScope,
- QCoreApplication::organizationName(), QCoreApplication::applicationName());
- const QByteArray restoredGeometry = settings.value(QLatin1String(geometryKey)).toByteArray();
- if (restoredGeometry.isEmpty() || !restoreGeometry(restoredGeometry)) {
- const QRect availableGeometry = QApplication::desktop()->availableGeometry(this);
- const QSize size = (availableGeometry.size() * 4) / 5;
- resize(size);
- move(availableGeometry.center() - QPoint(size.width(), size.height()) / 2);
- }
- const QString restoredVersion = settings.value(QLatin1String(versionKey)).toString();
- QList<Location> bookmarks = readBookMarks(settings);
- if (bookmarks.isEmpty() || restoredVersion.isEmpty())
- bookmarks = defaultBookmarks();
- for (const Location &bookmark : qAsConst(bookmarks))
- addBookmark(bookmark);
-}
-
-//! [1]
-
-MainWindow::~MainWindow()
-{
- QSettings settings(QSettings::IniFormat, QSettings::UserScope,
- QCoreApplication::organizationName(), QCoreApplication::applicationName());
- saveBookMarks(bookmarks(), settings);
- settings.setValue(QLatin1String(versionKey), QLatin1String(QT_VERSION_STR));
- settings.setValue(QLatin1String(geometryKey), saveGeometry());
-}
-
-QAction *MainWindow::addLocation(const Location &location, QMenu *menu)
-{
- QAction *action = menu->addAction(location.title);
- action->setData(QVariant::fromValue(location));
- m_locationActionMapper.setMapping(action, location.address);
- connect(action, &QAction::triggered, &m_locationActionMapper, QOverload<>::of(&QSignalMapper::map));
- return action;
-}
-
-QList<Location> MainWindow::bookmarks() const
-{
- QList<Location> result;
- for (const QAction *action : qAsConst(m_bookmarkActions))
- result.append(locationFromAction(action));
- return result;
-}
-
-void MainWindow::on_actionAddBookmark_triggered()
-{
- if (!m_historyActions.isEmpty()) {
- const Location location = locationFromAction(m_historyActions.last());
- if (!containsAddress(bookmarks(), location.address))
- addBookmark(location);
- }
-}
-
-//! [2]
-void MainWindow::on_WebBrowser_TitleChange(const QString &title)
-{
- // This is called multiple times after NavigateComplete().
- // Add new URLs to history here.
- setWindowTitle(tr("Qt WebBrowser - ") + title);
- const QString currentAddress = address();
- const QString historyAddress = m_historyActions.isEmpty() ?
- QString() : locationFromAction(m_historyActions.last()).address;
- if (currentAddress.isEmpty() || currentAddress == QStringLiteral("about:blank") || currentAddress == historyAddress)
- return;
- m_historyActions << addLocation(Location(title, currentAddress), HistoryMenu);
- if (m_historyActions.size() > 10)
- delete m_historyActions.takeFirst();
-}
-
-void MainWindow::on_WebBrowser_ProgressChange(int a, int b)
-{
- if (a <= 0 || b <= 0) {
- m_progressBar->hide();
- return;
- }
- m_progressBar->setRange(0, b);
- m_progressBar->setValue(a);
- m_progressBar->show();
-}
-
-void MainWindow::on_WebBrowser_CommandStateChange(int cmd, bool on)
-{
- switch (cmd) {
- case 1:
- actionForward->setEnabled(on);
- break;
- case 2:
- actionBack->setEnabled(on);
- break;
- }
-}
-
-void MainWindow::on_WebBrowser_BeforeNavigate()
-{
- actionStop->setEnabled(true);
-}
-
-void MainWindow::on_WebBrowser_NavigateComplete(const QString &url)
-{
- QSignalBlocker blocker(m_addressEdit);
- actionStop->setEnabled(false);
- m_addressEdit->setText(url);
-}
-
-//! [3]
-void MainWindow::on_actionGo_triggered()
-{
- navigate(address());
-}
-
-//! [2]
-
-void MainWindow::navigate(const QString &url)
-{
- WebBrowser->dynamicCall("Navigate(const QString&)", url);
-}
-
-void MainWindow::on_actionNewWindow_triggered()
-{
- MainWindow *window = new MainWindow;
- window->show();
- if (m_addressEdit->text().isEmpty())
- return;
- window->m_addressEdit->setText(m_addressEdit->text());
- window->actionStop->setEnabled(true);
- window->on_actionGo_triggered();
-}
-
-void MainWindow::on_actionAbout_triggered()
-{
- QMessageBox::about(this, tr("About WebBrowser"),
- tr("This Example has been created using the ActiveQt integration into Qt Designer.\n"
- "It demonstrates the use of QAxWidget to embed the Internet Explorer ActiveX\n"
- "control into a Qt application."));
-}
-
-void MainWindow::on_actionAboutQt_triggered()
-{
- QMessageBox::aboutQt(this, tr("About Qt"));
-}
-
-void MainWindow::on_actionFileClose_triggered()
-{
- close();
-}
-
-#include "main.moc"
-
-//! [3] //! [4]
-int main(int argc, char *argv[])
-{
- QApplication a(argc, argv);
- QCoreApplication::setApplicationVersion(QT_VERSION_STR);
- QCoreApplication::setApplicationName(QStringLiteral("Active Qt Web Browser"));
- QCoreApplication::setOrganizationName(QStringLiteral("QtProject"));
- MainWindow w;
- const auto &arguments = QCoreApplication::arguments();
- const QString url = arguments.value(1, QString::fromLatin1(qtUrl));
- w.navigate(url);
- w.show();
- return a.exec();
-}
-//! [4]
diff --git a/examples/activeqt/webbrowser/mainwindow.ui b/examples/activeqt/webbrowser/mainwindow.ui
deleted file mode 100644
index 4f5877d..0000000
--- a/examples/activeqt/webbrowser/mainwindow.ui
+++ /dev/null
@@ -1,290 +0,0 @@
-<ui version="4.0" stdsetdef="1" >
- <class>MainWindow</class>
- <widget class="QMainWindow" name="MainWindow" >
- <property name="objectName" >
- <string notr="true" >MainWindow</string>
- </property>
- <property name="geometry" >
- <rect>
- <x>0</x>
- <y>0</y>
- <width>812</width>
- <height>605</height>
- </rect>
- </property>
- <property name="windowTitle" >
- <string>Qt WebBrowser</string>
- </property>
- <widget class="QWidget" name="centralWidget">
- <layout class="QHBoxLayout" >
- <property name="objectName" >
- <string notr="true" >unnamed</string>
- </property>
- <property name="margin" >
- <number>0</number>
- </property>
- <property name="spacing" >
- <number>6</number>
- </property>
- <item>
- <widget class="QFrame" name="Frame3" >
- <property name="objectName" >
- <string notr="true" >Frame3</string>
- </property>
- <property name="frameShape" >
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="frameShadow" >
- <enum>QFrame::Sunken</enum>
- </property>
- <layout class="QVBoxLayout" >
- <property name="objectName" >
- <string notr="true" >unnamed</string>
- </property>
- <property name="margin" >
- <number>1</number>
- </property>
- <property name="spacing" >
- <number>0</number>
- </property>
- <item>
- <widget class="WebAxWidget" name="WebBrowser" >
- <property name="objectName" >
- <string notr="true" >WebBrowser</string>
- </property>
- <property name="focusPolicy" >
- <enum>Qt::StrongFocus</enum>
- </property>
- <property name="control" >
- <string>{8856F961-340A-11D0-A96B-00C04FD705A2}</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QToolBar" name="tbNavigate" >
- <property name="objectName" >
- <string notr="true" >tbNavigate</string>
- </property>
- <property name="windowTitle" >
- <string>Navigation</string>
- </property>
- <addaction name="actionBack" />
- <addaction name="actionForward" />
- <addaction name="actionStop" />
- <addaction name="actionRefresh" />
- <addaction name="actionHome" />
- <addaction name="separator" />
- <addaction name="actionSearch" />
- </widget>
- <widget class="QToolBar" name="tbAddress" >
- <property name="objectName" >
- <string notr="true" >tbAddress</string>
- </property>
- <property name="windowTitle" >
- <string>Address</string>
- </property>
- <addaction name="actionGo" />
- </widget>
- <widget class="QMenuBar" name="menubar" >
- <property name="objectName" >
- <string notr="true" >menubar</string>
- </property>
- <widget class="QMenu" name="PopupMenu" >
- <property name="objectName" >
- <string notr="true" >PopupMenu</string>
- </property>
- <property name="title" >
- <string>&amp;File</string>
- </property>
- <widget class="QMenu" name="FileNewGroup_2" >
- <property name="objectName" >
- <string notr="true" >FileNewGroup_2</string>
- </property>
- <property name="title" >
- <string>New</string>
- </property>
- <addaction name="actionNewWindow" />
- </widget>
- <addaction name="FileNewGroup" />
- <addaction name="FileNewGroup_2" />
- <addaction name="separator" />
- <addaction name="actionFileClose" />
- </widget>
- <widget class="QMenu" name="BookmarksMenu" >
- <property name="objectName" >
- <string notr="true" >BookmarksMenu</string>
- </property>
- <property name="title" >
- <string>&amp;Bookmarks</string>
- </property>
- <addaction name="actionAddBookmark" />
- <addaction name="separator" />
- </widget>
- <widget class="QMenu" name="HistoryMenu" >
- <property name="objectName" >
- <string notr="true" >HistoryMenu</string>
- </property>
- <property name="title" >
- <string>Hi&amp;story</string>
- </property>
- </widget>
- <widget class="QMenu" name="unnamed" >
- <property name="objectName" >
- <string notr="true" >unnamed</string>
- </property>
- <property name="title" >
- <string>&amp;Help</string>
- </property>
- <addaction name="actionAbout" />
- <addaction name="actionAboutQt" />
- </widget>
- <addaction name="PopupMenu" />
- <addaction name="BookmarksMenu" />
- <addaction name="HistoryMenu" />
- <addaction name="unnamed" />
- </widget>
- <action name="actionGo" >
- <property name="objectName" >
- <string>actionGo</string>
- </property>
- <property name="icon" >
- <iconset>:/images/go.png</iconset>
- </property>
- <property name="iconText" >
- <string>Go</string>
- </property>
- </action>
- <action name="actionBack" >
- <property name="objectName" >
- <string>actionBack</string>
- </property>
- <property name="icon" >
- <iconset>:/images/back.png</iconset>
- </property>
- <property name="iconText" >
- <string>Back</string>
- </property>
- <property name="shortcut" >
- <string>Backspace</string>
- </property>
- </action>
- <action name="actionForward" >
- <property name="objectName" >
- <string>actionForward</string>
- </property>
- <property name="icon" >
- <iconset>:/images/forward.png</iconset>
- </property>
- <property name="iconText" >
- <string>Forward</string>
- </property>
- </action>
- <action name="actionStop" >
- <property name="objectName" >
- <string>actionStop</string>
- </property>
- <property name="icon" >
- <iconset>:/images/stop.png</iconset>
- </property>
- <property name="iconText" >
- <string>Stop</string>
- </property>
- </action>
- <action name="actionRefresh" >
- <property name="objectName" >
- <string>actionRefresh</string>
- </property>
- <property name="icon" >
- <iconset>:/images/refresh.png</iconset>
- </property>
- <property name="iconText" >
- <string>Refresh</string>
- </property>
- </action>
- <action name="actionHome" >
- <property name="objectName" >
- <string>actionHome</string>
- </property>
- <property name="icon" >
- <iconset>:/images/home.png</iconset>
- </property>
- <property name="iconText" >
- <string>Home</string>
- </property>
- </action>
- <action name="actionFileClose" >
- <property name="objectName" >
- <string>actionFileClose</string>
- </property>
- <property name="iconText" >
- <string>Close</string>
- </property>
- <property name="text" >
- <string>C&amp;lose</string>
- </property>
- </action>
- <action name="actionSearch" >
- <property name="objectName" >
- <string>actionSearch</string>
- </property>
- <property name="icon" >
- <iconset>:/images/search.png</iconset>
- </property>
- <property name="iconText" >
- <string>Search</string>
- </property>
- </action>
- <action name="actionAbout" >
- <property name="objectName" >
- <string>actionAbout</string>
- </property>
- <property name="iconText" >
- <string>About</string>
- </property>
- </action>
- <action name="actionAddBookmark" >
- <property name="objectName" >
- <string>actionAddBookmark</string>
- </property>
- <property name="text" >
- <string>Add Bookmark</string>
- </property>
- </action>
- <action name="actionAboutQt" >
- <property name="objectName" >
- <string>actionAboutQt</string>
- </property>
- <property name="iconText" >
- <string>About Qt</string>
- </property>
- </action>
- <actiongroup name="FileNewGroup" >
- <action name="actionNewWindow" >
- <property name="objectName" >
- <string>actionNewWindow</string>
- </property>
- <property name="iconText" >
- <string>Window</string>
- </property>
- <property name="shortcut" >
- <string>Ctrl+N</string>
- </property>
- </action>
- <property name="objectName" >
- <string>FileNewGroup</string>
- </property>
- </actiongroup>
- </widget>
- <customwidgets>
- <customwidget>
- <class>WebAxWidget</class>
- <extends>QAxWidget</extends>
- <header>webaxwidget.h</header>
- </customwidget>
- </customwidgets>
- <layoutdefault spacing="6" margin="11" />
-</ui>
diff --git a/examples/activeqt/webbrowser/webbrowser.qrc b/examples/activeqt/webbrowser/webbrowser.qrc
deleted file mode 100644
index 4f463e2..0000000
--- a/examples/activeqt/webbrowser/webbrowser.qrc
+++ /dev/null
@@ -1,11 +0,0 @@
-<RCC>
-<qresource>
- <file>images/back.png</file>
- <file>images/forward.png</file>
- <file>images/go.png</file>
- <file>images/home.png</file>
- <file>images/refresh.png</file>
- <file>images/search.png</file>
- <file>images/stop.png</file>
-</qresource>
-</RCC>
diff --git a/src/activeqt/container/qaxbase.cpp b/src/activeqt/container/qaxbase.cpp
index aa66398..fa3eacf 100644
--- a/src/activeqt/container/qaxbase.cpp
+++ b/src/activeqt/container/qaxbase.cpp
@@ -1444,13 +1444,13 @@ bool QAxBase::initializeRemote(IUnknown** ptr)
COAUTHIDENTITY authIdentity;
authIdentity.UserLength = ULONG(user.length());
authIdentity.User = authIdentity.UserLength
- ? const_cast<ushort *>(user.utf16()) : Q_NULLPTR;
+ ? const_cast<ushort *>(user.utf16()) : nullptr;
authIdentity.DomainLength = ULONG(domain.length());
authIdentity.Domain = authIdentity.DomainLength
- ? const_cast<ushort *>(domain.utf16()) : Q_NULLPTR;
+ ? const_cast<ushort *>(domain.utf16()) : nullptr;
authIdentity.PasswordLength = ULONG(passwd.length());
authIdentity.Password = authIdentity.PasswordLength
- ? const_cast<ushort *>(passwd.utf16()) : Q_NULLPTR;
+ ? const_cast<ushort *>(passwd.utf16()) : nullptr;
authIdentity.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE;
COAUTHINFO authInfo;
diff --git a/src/activeqt/container/qaxbase.h b/src/activeqt/container/qaxbase.h
index 14be355..722b210 100644
--- a/src/activeqt/container/qaxbase.h
+++ b/src/activeqt/container/qaxbase.h
@@ -74,7 +74,7 @@ class QAxBase
public:
typedef QMap<QString, QVariant> PropertyBag;
- explicit QAxBase(IUnknown *iface = Q_NULLPTR);
+ explicit QAxBase(IUnknown *iface = nullptr);
virtual ~QAxBase();
QString control() const;
@@ -183,13 +183,13 @@ private:
template <> inline QAxBase *qobject_cast<QAxBase*>(const QObject *o)
{
- void *result = o ? const_cast<QObject *>(o)->qt_metacast("QAxBase") : Q_NULLPTR;
+ void *result = o ? const_cast<QObject *>(o)->qt_metacast("QAxBase") : nullptr;
return static_cast<QAxBase *>(result);
}
template <> inline QAxBase *qobject_cast<QAxBase*>(QObject *o)
{
- void *result = o ? o->qt_metacast("QAxBase") : Q_NULLPTR;
+ void *result = o ? o->qt_metacast("QAxBase") : nullptr;
return static_cast<QAxBase *>(result);
}
diff --git a/src/activeqt/container/qaxobject.h b/src/activeqt/container/qaxobject.h
index 25d8f1d..bebc60a 100644
--- a/src/activeqt/container/qaxobject.h
+++ b/src/activeqt/container/qaxobject.h
@@ -60,33 +60,33 @@ class QAxObject : public QObject, public QAxBase
friend class QAxEventSink;
Q_OBJECT_FAKE
public:
- QObject* qObject() const Q_DECL_OVERRIDE { return static_cast<QObject *>(const_cast<QAxObject *>(this)); }
- const char *className() const Q_DECL_OVERRIDE;
+ QObject* qObject() const override { return static_cast<QObject *>(const_cast<QAxObject *>(this)); }
+ const char *className() const override;
- explicit QAxObject(QObject *parent = Q_NULLPTR);
- explicit QAxObject(const QString &c, QObject *parent = Q_NULLPTR);
- explicit QAxObject(IUnknown *iface, QObject *parent = Q_NULLPTR);
+ explicit QAxObject(QObject *parent = nullptr);
+ explicit QAxObject(const QString &c, QObject *parent = nullptr);
+ explicit QAxObject(IUnknown *iface, QObject *parent = nullptr);
~QAxObject();
bool doVerb(const QString &verb);
protected:
- void connectNotify(const QMetaMethod &signal) Q_DECL_OVERRIDE;
- const QMetaObject *fallbackMetaObject() const Q_DECL_OVERRIDE;
+ void connectNotify(const QMetaMethod &signal) override;
+ const QMetaObject *fallbackMetaObject() const override;
private:
- const QMetaObject *parentMetaObject() const Q_DECL_OVERRIDE;
+ const QMetaObject *parentMetaObject() const override;
};
template <> inline QAxObject *qobject_cast<QAxObject*>(const QObject *o)
{
- void *result = o ? const_cast<QObject *>(o)->qt_metacast("QAxObject") : Q_NULLPTR;
+ void *result = o ? const_cast<QObject *>(o)->qt_metacast("QAxObject") : nullptr;
return reinterpret_cast<QAxObject*>(result);
}
template <> inline QAxObject *qobject_cast<QAxObject*>(QObject *o)
{
- void *result = o ? o->qt_metacast("QAxObject") : Q_NULLPTR;
+ void *result = o ? o->qt_metacast("QAxObject") : nullptr;
return reinterpret_cast<QAxObject*>(result);
}
diff --git a/src/activeqt/container/qaxscript.h b/src/activeqt/container/qaxscript.h
index 7185ece..f09b2fc 100644
--- a/src/activeqt/container/qaxscript.h
+++ b/src/activeqt/container/qaxscript.h
@@ -92,7 +92,7 @@ public:
long queryInterface(const QUuid &, void**) const;
protected:
- bool initialize(IUnknown** ptr) Q_DECL_OVERRIDE;
+ bool initialize(IUnknown** ptr) override;
private:
QAxScript *script_code;
@@ -159,7 +159,7 @@ class QAxScriptManager : public QObject
Q_OBJECT
public:
- explicit QAxScriptManager(QObject *parent = Q_NULLPTR);
+ explicit QAxScriptManager(QObject *parent = nullptr);
~QAxScriptManager();
void addObject(QAxBase *object);
@@ -222,7 +222,7 @@ inline QAxScriptEngine *QAxScript::scriptEngine() const
inline bool QAxScriptEngine::isValid() const
{
- return engine != Q_NULLPTR;
+ return engine != nullptr;
}
inline QString QAxScriptEngine::scriptLanguage() const
diff --git a/src/activeqt/container/qaxselect.h b/src/activeqt/container/qaxselect.h
index 1d42a61..8921a17 100644
--- a/src/activeqt/container/qaxselect.h
+++ b/src/activeqt/container/qaxselect.h
@@ -61,7 +61,7 @@ class QAxSelect : public QDialog
{
Q_OBJECT
public:
- explicit QAxSelect(QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags());
+ explicit QAxSelect(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());
~QAxSelect();
QString clsid() const;
diff --git a/src/activeqt/container/qaxwidget.cpp b/src/activeqt/container/qaxwidget.cpp
index 67485a1..5039123 100644
--- a/src/activeqt/container/qaxwidget.cpp
+++ b/src/activeqt/container/qaxwidget.cpp
@@ -473,7 +473,7 @@ static const wchar_t *qaxatom = L"QAxContainer4_Atom";
class QAxNativeEventFilter : public QAbstractNativeEventFilter
{
public:
- bool nativeEventFilter(const QByteArray &eventType, void *message, long *) Q_DECL_OVERRIDE;
+ bool nativeEventFilter(const QByteArray &eventType, void *message, long *) override;
};
Q_GLOBAL_STATIC(QAxNativeEventFilter, s_nativeEventFilter)
@@ -752,7 +752,7 @@ void QAxClientSite::releaseAll()
{
if (m_spOleControl)
m_spOleControl->Release();
- m_spOleControl = Q_NULLPTR;
+ m_spOleControl = nullptr;
if (m_spOleObject) {
m_spOleObject->SetClientSite(0);
m_spOleObject->Unadvise(m_dwOleObject);
diff --git a/src/activeqt/container/qaxwidget.h b/src/activeqt/container/qaxwidget.h
index 02b5315..3a9f19e 100644
--- a/src/activeqt/container/qaxwidget.h
+++ b/src/activeqt/container/qaxwidget.h
@@ -66,51 +66,51 @@ class QAxWidget : public QWidget, public QAxBase
{
Q_OBJECT_FAKE
public:
- QObject* qObject() const Q_DECL_OVERRIDE { return const_cast<QAxWidget *>(this); }
- const char *className() const Q_DECL_OVERRIDE;
+ QObject* qObject() const override { return const_cast<QAxWidget *>(this); }
+ const char *className() const override;
- explicit QAxWidget(QWidget* parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags());
- explicit QAxWidget(const QString &c, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags());
- explicit QAxWidget(IUnknown *iface, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags());
+ explicit QAxWidget(QWidget* parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
+ explicit QAxWidget(const QString &c, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
+ explicit QAxWidget(IUnknown *iface, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
~QAxWidget();
- void clear() Q_DECL_OVERRIDE;
+ void clear() override;
bool doVerb(const QString &verb);
- QSize sizeHint() const Q_DECL_OVERRIDE;
- QSize minimumSizeHint() const Q_DECL_OVERRIDE;
+ QSize sizeHint() const override;
+ QSize minimumSizeHint() const override;
virtual QAxAggregated *createAggregate();
protected:
- bool initialize(IUnknown **) Q_DECL_OVERRIDE;
+ bool initialize(IUnknown **) override;
virtual bool createHostWindow(bool);
bool createHostWindow(bool, const QByteArray&);
- void changeEvent(QEvent *e) Q_DECL_OVERRIDE;
- void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE;
+ void changeEvent(QEvent *e) override;
+ void resizeEvent(QResizeEvent *) override;
virtual bool translateKeyEvent(int message, int keycode) const;
- void connectNotify(const QMetaMethod &signal) Q_DECL_OVERRIDE;
- const QMetaObject *fallbackMetaObject() const Q_DECL_OVERRIDE;
+ void connectNotify(const QMetaMethod &signal) override;
+ const QMetaObject *fallbackMetaObject() const override;
private:
friend class QAxClientSite;
QAxClientSite *container;
QAxWidgetPrivate *d;
- const QMetaObject *parentMetaObject() const Q_DECL_OVERRIDE;
+ const QMetaObject *parentMetaObject() const override;
};
template <> inline QAxWidget *qobject_cast<QAxWidget*>(const QObject *o)
{
- void *result = o ? const_cast<QObject *>(o)->qt_metacast("QAxWidget") : Q_NULLPTR;
+ void *result = o ? const_cast<QObject *>(o)->qt_metacast("QAxWidget") : nullptr;
return static_cast<QAxWidget *>(result);
}
template <> inline QAxWidget *qobject_cast<QAxWidget*>(QObject *o)
{
- void *result = o ? o->qt_metacast("QAxWidget") : Q_NULLPTR;
+ void *result = o ? o->qt_metacast("QAxWidget") : nullptr;
return static_cast<QAxWidget *>(result);
}
diff --git a/src/activeqt/control/qaxaggregated.h b/src/activeqt/control/qaxaggregated.h
index 2192266..21add50 100644
--- a/src/activeqt/control/qaxaggregated.h
+++ b/src/activeqt/control/qaxaggregated.h
@@ -83,10 +83,10 @@ private:
};
#define QAXAGG_IUNKNOWN \
- HRESULT WINAPI QueryInterface(REFIID iid, LPVOID *iface) Q_DECL_OVERRIDE \
+ HRESULT WINAPI QueryInterface(REFIID iid, LPVOID *iface) override \
{ return controllingUnknown()->QueryInterface(iid, iface); } \
- ULONG WINAPI AddRef() Q_DECL_OVERRIDE { return controllingUnknown()->AddRef(); } \
- ULONG WINAPI Release() Q_DECL_OVERRIDE { return controllingUnknown()->Release(); } \
+ ULONG WINAPI AddRef() override { return controllingUnknown()->AddRef(); } \
+ ULONG WINAPI Release() override { return controllingUnknown()->Release(); } \
QT_END_NAMESPACE
diff --git a/src/activeqt/control/qaxfactory.h b/src/activeqt/control/qaxfactory.h
index e2c327b..9beacbf 100644
--- a/src/activeqt/control/qaxfactory.h
+++ b/src/activeqt/control/qaxfactory.h
@@ -162,13 +162,13 @@ inline bool QAxFactory::stopServer()
{ \
if (key == className) \
return &Class::staticMetaObject; \
- return Q_NULLPTR; \
+ return nullptr; \
} \
QObject *createObject(const QString &key) override \
{ \
if (key == className) \
- return new Class(Q_NULLPTR); \
- return Q_NULLPTR; \
+ return new Class(nullptr); \
+ return nullptr; \
} \
QUuid classID(const QString &key) const override \
{ \
@@ -202,19 +202,19 @@ public:
: QAxFactory(libId, appId)
{}
- const QMetaObject *metaObject(const QString &) const Q_DECL_OVERRIDE { return &T::staticMetaObject; }
- QStringList featureList() const Q_DECL_OVERRIDE { return QStringList(QLatin1String(T::staticMetaObject.className())); }
- QObject *createObject(const QString &key) Q_DECL_OVERRIDE
+ const QMetaObject *metaObject(const QString &) const override { return &T::staticMetaObject; }
+ QStringList featureList() const override { return QStringList(QLatin1String(T::staticMetaObject.className())); }
+ QObject *createObject(const QString &key) override
{
const QMetaObject &mo = T::staticMetaObject;
if (key != QLatin1String(mo.className()))
- return Q_NULLPTR;
+ return nullptr;
if (!qstrcmp(mo.classInfo(mo.indexOfClassInfo("Creatable")).value(), "no"))
- return Q_NULLPTR;
- return new T(Q_NULLPTR);
+ return nullptr;
+ return new T(nullptr);
}
- void registerClass(const QString &key, QSettings *settings) const Q_DECL_OVERRIDE
+ void registerClass(const QString &key, QSettings *settings) const override
{
const QStringList categories = getImplementedCategories();
@@ -225,7 +225,7 @@ public:
}
}
- void unregisterClass(const QString &key, QSettings *settings) const Q_DECL_OVERRIDE
+ void unregisterClass(const QString &key, QSettings *settings) const override
{
const QStringList categories = getImplementedCategories();
@@ -256,7 +256,7 @@ private:
QAxFactoryList() \
: QAxFactory(IDTypeLib, IDApp) \
{ \
- QAxFactory *factory = Q_NULLPTR; \
+ QAxFactory *factory = nullptr; \
QStringList keys; \
QStringList::Iterator it; \
@@ -282,47 +282,47 @@ private:
#define QAXFACTORY_END() \
} \
- ~QAxFactoryList() Q_DECL_OVERRIDE { qDeleteAll(factories); } \
- QStringList featureList() const Q_DECL_OVERRIDE { return factoryKeys; } \
- const QMetaObject *metaObject(const QString&key) const Q_DECL_OVERRIDE { \
+ ~QAxFactoryList() override { qDeleteAll(factories); } \
+ QStringList featureList() const override { return factoryKeys; } \
+ const QMetaObject *metaObject(const QString&key) const override { \
QAxFactory *f = factories[key]; \
- return f ? f->metaObject(key) : Q_NULLPTR; \
+ return f ? f->metaObject(key) : nullptr; \
} \
- QObject *createObject(const QString &key) Q_DECL_OVERRIDE { \
+ QObject *createObject(const QString &key) override { \
if (!creatable.value(key)) \
- return Q_NULLPTR; \
+ return nullptr; \
QAxFactory *f = factories[key]; \
- return f ? f->createObject(key) : Q_NULLPTR; \
+ return f ? f->createObject(key) : nullptr; \
} \
- QUuid classID(const QString &key) const Q_DECL_OVERRIDE { \
+ QUuid classID(const QString &key) const override { \
QAxFactory *f = factories.value(key); \
return f ? f->classID(key) : QUuid(); \
} \
- QUuid interfaceID(const QString &key) const Q_DECL_OVERRIDE { \
+ QUuid interfaceID(const QString &key) const override { \
QAxFactory *f = factories.value(key); \
return f ? f->interfaceID(key) : QUuid(); \
} \
- QUuid eventsID(const QString &key) const Q_DECL_OVERRIDE { \
+ QUuid eventsID(const QString &key) const override { \
QAxFactory *f = factories.value(key); \
return f ? f->eventsID(key) : QUuid(); \
} \
- void registerClass(const QString &key, QSettings *s) const Q_DECL_OVERRIDE { \
+ void registerClass(const QString &key, QSettings *s) const override { \
QAxFactory *f = factories.value(key); \
if (f) f->registerClass(key, s); \
} \
- void unregisterClass(const QString &key, QSettings *s) const Q_DECL_OVERRIDE { \
+ void unregisterClass(const QString &key, QSettings *s) const override { \
QAxFactory *f = factories.value(key); \
if (f) f->unregisterClass(key, s); \
} \
- QString exposeToSuperClass(const QString &key) const Q_DECL_OVERRIDE { \
+ QString exposeToSuperClass(const QString &key) const override { \
QAxFactory *f = factories.value(key); \
return f ? f->exposeToSuperClass(key) : QString(); \
} \
- bool stayTopLevel(const QString &key) const Q_DECL_OVERRIDE { \
+ bool stayTopLevel(const QString &key) const override { \
QAxFactory *f = factories.value(key); \
return f ? f->stayTopLevel(key) : false; \
} \
- bool hasStockEvents(const QString &key) const Q_DECL_OVERRIDE { \
+ bool hasStockEvents(const QString &key) const override { \
QAxFactory *f = factories.value(key); \
return f ? f->hasStockEvents(key) : false; \
} \
diff --git a/src/activeqt/control/qaxserverbase.cpp b/src/activeqt/control/qaxserverbase.cpp
index bfc4fc0..d46ddda 100644
--- a/src/activeqt/control/qaxserverbase.cpp
+++ b/src/activeqt/control/qaxserverbase.cpp
@@ -151,7 +151,7 @@ class QAxServerBase :
#if defined Q_CC_GNU
# if (__W32API_MAJOR_VERSION < 2 || (__W32API_MAJOR_VERSION == 2 && __W32API_MINOR_VERSION < 5))
public IViewObject, // this should not be needed as IViewObject2 is meant to inherit from this,
- // untill the mingw headers are fixed this will need to stay.
+ // until the mingw headers are fixed this will need to stay.
# endif
#endif
public IViewObject2,
@@ -816,7 +816,7 @@ LRESULT QT_WIN_CALLBACK axs_FilterProc(int nCode, WPARAM wParam, LPARAM lParam)
class QAxWinEventFilter : public QAbstractNativeEventFilter
{
public:
- bool nativeEventFilter(const QByteArray &, void *message, long *) Q_DECL_OVERRIDE;
+ bool nativeEventFilter(const QByteArray &, void *message, long *) override;
};
bool QAxWinEventFilter::nativeEventFilter(const QByteArray &, void *message, long *)
@@ -2519,7 +2519,7 @@ HRESULT WINAPI QAxServerBase::Invoke(DISPID dispidMember, REFIID riid,
vt = QVariant::Int;
varp[0] = QVariant(vt);
if (varp[0].type() == QVariant::Invalid)
- argv[0] = Q_NULLPTR;
+ argv[0] = nullptr;
else
argv[0] = const_cast<void*>(varp[0].constData());
}
diff --git a/src/activeqt/doc/src/activeqt-index.qdoc b/src/activeqt/doc/src/activeqt-index.qdoc
index 2fba3ea..7920bdc 100644
--- a/src/activeqt/doc/src/activeqt-index.qdoc
+++ b/src/activeqt/doc/src/activeqt-index.qdoc
@@ -106,9 +106,9 @@
\li \l{Dot Net Example (ActiveQt)}
\li \l{OpenGL Example (ActiveQt)}
\li \l{Hierarchy Example (ActiveQt)}
+ \li \l{Media Player Example (ActiveQt)}
\li \l{Menus Example (ActiveQt)}
\li \l{Wrapper Example (ActiveQt)}
\li \l{Simple Example (ActiveQt)}
- \li \l{Web Browser Example (ActiveQt)}
\endlist
*/
diff --git a/src/activeqt/doc/src/qtaxcontainer.qdoc b/src/activeqt/doc/src/qtaxcontainer.qdoc
index 7d79372..ba73467 100644
--- a/src/activeqt/doc/src/qtaxcontainer.qdoc
+++ b/src/activeqt/doc/src/qtaxcontainer.qdoc
@@ -199,7 +199,7 @@
object and its subobjects; note that not all of the COM object's APIs
might be available.
- See the \l{activeqt/webbrowser}{Webbrowser} example for more information.
+ See the \l{activeqt/mediaplayer}{Media Player} example for more information.
\section2 Calling Function Through a Script Engine
diff --git a/src/activeqt/shared/qaxtypes.cpp b/src/activeqt/shared/qaxtypes.cpp
index 62bad32..ffbe52c 100644
--- a/src/activeqt/shared/qaxtypes.cpp
+++ b/src/activeqt/shared/qaxtypes.cpp
@@ -643,7 +643,7 @@ bool QVariantToVARIANT(const QVariant &var, VARIANT &arg, const QByteArray &type
if (out) {
qWarning().noquote() << msgOutParameterNotSupported("records");
arg.vt = VT_EMPTY;
- arg.byref = Q_NULLPTR;
+ arg.byref = nullptr;
return false;
}
arg.vt = VT_RECORD;
@@ -663,7 +663,7 @@ bool QVariantToVARIANT(const QVariant &var, VARIANT &arg, const QByteArray &type
if (out) {
qWarning().noquote() << msgOutParameterNotSupported(qvar.typeName());
arg.vt = VT_EMPTY;
- arg.byref = Q_NULLPTR;
+ arg.byref = nullptr;
return false;
}
arg.vt = VT_DISPATCH;
@@ -679,7 +679,7 @@ bool QVariantToVARIANT(const QVariant &var, VARIANT &arg, const QByteArray &type
if (out) {
qWarning().noquote() << msgOutParameterNotSupported(qvar.typeName());
arg.vt = VT_EMPTY;
- arg.byref = Q_NULLPTR;
+ arg.byref = nullptr;
return false;
}
arg.vt = VT_UNKNOWN;
@@ -691,7 +691,7 @@ bool QVariantToVARIANT(const QVariant &var, VARIANT &arg, const QByteArray &type
if (out) {
qWarning().noquote() << msgOutParameterNotSupported("subtype");
arg.vt = VT_EMPTY;
- arg.byref = Q_NULLPTR;
+ arg.byref = nullptr;
return false;
}
arg.vt = VT_DISPATCH;
@@ -707,7 +707,7 @@ bool QVariantToVARIANT(const QVariant &var, VARIANT &arg, const QByteArray &type
if (out) {
qWarning().noquote() << msgOutParameterNotSupported("subtype");
arg.vt = VT_EMPTY;
- arg.byref = Q_NULLPTR;
+ arg.byref = nullptr;
return false;
}
QAxObject *object = *(QAxObject**)qvar.constData();
diff --git a/src/activeqt/shared/qaxutils.cpp b/src/activeqt/shared/qaxutils.cpp
index bf5b99b..c41b321 100644
--- a/src/activeqt/shared/qaxutils.cpp
+++ b/src/activeqt/shared/qaxutils.cpp
@@ -99,14 +99,8 @@ static void addRectToHrgn(HRGN &winRegion, const QRect &r)
HRGN qaxHrgnFromQRegion(QRegion region, const QWindow *window)
{
- region = QHighDpi::toNativeLocalRegion(region, window);
HRGN hRegion = CreateRectRgn(0, 0, 0, 0);
- if (region.rectCount() == 1) {
- addRectToHrgn(hRegion, region.boundingRect());
- return hRegion;
- }
- const QVector<QRect> &rects = region.rects();
- for (const QRect &rect : rects)
+ for (const QRect &rect : QHighDpi::toNativeLocalRegion(region, window))
addRectToHrgn(hRegion, rect);
return hRegion;
}
diff --git a/tests/manual/testcontrol/main.cpp b/tests/manual/testcontrol/main.cpp
index f8fd3e6..7fca250 100644
--- a/tests/manual/testcontrol/main.cpp
+++ b/tests/manual/testcontrol/main.cpp
@@ -55,7 +55,7 @@ class QTestControl : public QMainWindow
Q_CLASSINFO("EventsID", "{E1816BBA-BF5D-4A31-9855-D6BA43205510}")
public:
- explicit QTestControl(QWidget *parent = Q_NULLPTR);
+ explicit QTestControl(QWidget *parent = nullptr);
public slots:
void appendText(const QString &t) { m_logWindow->appendPlainText(t); }
diff --git a/tools/dumpcpp/main.cpp b/tools/dumpcpp/main.cpp
index 1f0cca8..8a37f33 100644
--- a/tools/dumpcpp/main.cpp
+++ b/tools/dumpcpp/main.cpp
@@ -925,7 +925,7 @@ static QByteArrayList vTableOnlyStubsFromTypeLib(ITypeLib *typelib, const QStrin
for (UINT i = 0, typeCount = typelib->GetTypeInfoCount(); i < typeCount; ++i) {
TYPEKIND typekind;
if (SUCCEEDED(typelib->GetTypeInfoType(i, &typekind)) && typekind == TKIND_INTERFACE) {
- ITypeInfo *typeinfo = Q_NULLPTR;
+ ITypeInfo *typeinfo = nullptr;
if (SUCCEEDED(typelib->GetTypeInfo(i, &typeinfo) && typeinfo)) {
result.append(nameSpacePrefix + classNameFromTypeInfo(typeinfo));
typeinfo->Release();
@@ -949,7 +949,7 @@ bool generateTypeLibrary(QString typeLibFile, QString outname,
QString libName = nameSpace;
if (libName.isEmpty()) {
- BSTR nameString = Q_NULLPTR;
+ BSTR nameString = nullptr;
if (SUCCEEDED(typelib->GetDocumentation(-1, &nameString, 0, 0, 0))) {
libName = QString::fromWCharArray(nameString);
SysFreeString(nameString);
diff --git a/tools/testcon/mainwindow.cpp b/tools/testcon/mainwindow.cpp
index 682c8e5..3ff0016 100644
--- a/tools/testcon/mainwindow.cpp
+++ b/tools/testcon/mainwindow.cpp
@@ -65,14 +65,14 @@ static const ScriptLanguage scriptLanguages[] = {
{"Python", ".py"}
};
-MainWindow *MainWindow::m_instance = Q_NULLPTR;
+MainWindow *MainWindow::m_instance = nullptr;
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
- , m_dlgInvoke(Q_NULLPTR)
- , m_dlgProperties(Q_NULLPTR)
- , m_dlgAmbient(Q_NULLPTR)
- , m_scripts(Q_NULLPTR)
+ , m_dlgInvoke(nullptr)
+ , m_dlgProperties(nullptr)
+ , m_dlgAmbient(nullptr)
+ , m_scripts(nullptr)
{
setupUi(this);
MainWindow::m_instance = this; // Logging handler needs the UI
@@ -99,7 +99,7 @@ MainWindow::MainWindow(QWidget *parent)
MainWindow::~MainWindow()
{
- MainWindow::m_instance = Q_NULLPTR;
+ MainWindow::m_instance = nullptr;
}
QAxWidget *MainWindow::activeAxWidget() const
diff --git a/tools/testcon/mainwindow.h b/tools/testcon/mainwindow.h
index 84cd2ce..7e6575b 100644
--- a/tools/testcon/mainwindow.h
+++ b/tools/testcon/mainwindow.h
@@ -59,7 +59,7 @@ public:
bool loadScript(const QString &file);
protected:
- void closeEvent(QCloseEvent *) Q_DECL_OVERRIDE;
+ void closeEvent(QCloseEvent *) override;
public slots:
void appendLogText(const QString &);