QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgswebview.h
Go to the documentation of this file.
1/***************************************************************************
2
3 ----------------------------------------------------
4 date : 19.5.2015
5 copyright : (C) 2015 by Matthias Kuhn
6 email : matthias (at) opengis.ch
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSWEBVIEW_H
17#define QGSWEBVIEW_H
18
19
20#define SIP_NO_FILE
21
22#include <QWidget>
23
24#ifdef WITH_QTWEBKIT
25#include <QWebView>
26#include <QDesktopWidget>
27
28#include "qgis_core.h"
29
30
34class CORE_EXPORT QgsWebView : public QWebView
35{
36 Q_OBJECT
37
38 public:
39 explicit QgsWebView( QWidget *parent = nullptr )
40 : QWebView( parent )
41 {
42 const QDesktopWidget desktop;
43 // Apply zoom factor for HiDPI screens
44 if ( desktop.logicalDpiX() > 96 )
45 {
46 setZoomFactor( desktop.logicalDpiX() / 96 );
47 }
48 }
49};
50#else
51#include "qgswebpage.h"
52#include <QTextBrowser>
53
54class QPrinter;
55
65class CORE_EXPORT QgsWebView : public QTextBrowser
66{
67
69 Q_OBJECT
70 public:
71 explicit QgsWebView( QWidget *parent = nullptr )
72 : QTextBrowser( parent )
73 , mSettings( new QWebSettings() )
74 , mPage( new QWebPage( this ) )
75 {
76 connect( this, &QTextBrowser::anchorClicked, this, &QgsWebView::linkClicked );
77 connect( this, &QgsWebView::pageLoadFinished, mPage, &QWebPage::loadFinished );
78 }
79
81 {
82 delete mSettings;
83 delete mPage;
84 }
85
86 void setUrl( const QUrl &url )
87 {
88 setSource( url );
89 }
90
91 void load( const QUrl &url )
92 {
93 setSource( url );
94 }
95
96 QWebPage *page() const
97 {
98 return mPage;
99 }
100
101 QWebSettings *settings() const
102 {
103 return mSettings;
104 }
105
106 virtual QgsWebView *createWindow( QWebPage::WebWindowType )
107 {
108 return new QgsWebView();
109 }
110
111 void setContent( const QByteArray &data, const QString &contentType, const QUrl & )
112 {
113 QString text = QString::fromUtf8( data );
114 if ( contentType == "text/html" )
115 setHtml( text );
116 else
117 setPlainText( text );
118
119 emit pageLoadFinished( true );
120 }
121
122 void print( QPrinter * )
123 {
124 }
125
126 signals:
127 void linkClicked( const QUrl &link );
128
129 void pageLoadFinished( bool ok );
130
131 public slots:
132
133 void setHtml( const QString &text )
134 {
135 QTextBrowser::setHtml( text );
136 emit pageLoadFinished( true );
137 }
138
139 void setText( const QString &text )
140 {
141 QTextBrowser::setText( text );
142 emit pageLoadFinished( true );
143 }
144
145 private:
146 QWebSettings *mSettings = nullptr;
147 QWebPage *mPage = nullptr;
148
150};
151#endif
152
153#endif // QGSWEBVIEW_H
The QWebPage class is a collection of stubs to mimic the API of a QWebPage on systems where QtWebkit ...
Definition: qgswebpage.h:104
The QWebSettings class is a collection of stubs to mimic the API of a QWebSettings on systems where Q...
Definition: qgswebpage.h:43
The QgsWebView class is a collection of stubs to mimic the API of QWebView on systems where the real ...
Definition: qgswebview.h:66