QWebFrame Class
The QWebFrame class represents a frame in a web page. More...
Header: | #include <QWebFrame> |
qmake: | QT += webkitwidgets |
Since: | Qt 4.4 |
Public Types
enum | RenderLayer { ContentsLayer, ScrollBarLayer, PanIconLayer, AllLayers } |
flags | RenderLayers |
enum | ValueOwnership { QtOwnership, ScriptOwnership, AutoOwnership } |
Properties
|
|
Public Functions
void | addToJavaScriptWindowObject(const QString &name, QObject *object, QWebFrame::ValueOwnership ownership = QtOwnership) |
QUrl | baseUrl() const |
QList<QWebFrame *> | childFrames() const |
QSize | contentsSize() const |
QWebElement | documentElement() const |
QWebElementCollection | findAllElements(const QString &selectorQuery) const |
QWebElement | findFirstElement(const QString &selectorQuery) const |
QString | frameName() const |
QRect | geometry() const |
bool | hasFocus() const |
QWebHitTestResult | hitTestContent(const QPoint &pos) const |
QIcon | icon() const |
void | load(const QUrl &url) |
void | load(const QNetworkRequest &req, QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, const QByteArray &body = QByteArray()) |
QMultiMap<QString, QString> | metaData() const |
QWebPage * | page() const |
QWebFrame * | parentFrame() const |
QPoint | pos() const |
void | render(QPainter *painter, const QRegion &clip = QRegion()) |
void | render(QPainter *painter, QWebFrame::RenderLayers layer, const QRegion &clip = QRegion()) |
QUrl | requestedUrl() const |
void | scroll(int dx, int dy) |
QRect | scrollBarGeometry(Qt::Orientation orientation) const |
int | scrollBarMaximum(Qt::Orientation orientation) const |
int | scrollBarMinimum(Qt::Orientation orientation) const |
Qt::ScrollBarPolicy | scrollBarPolicy(Qt::Orientation orientation) const |
int | scrollBarValue(Qt::Orientation orientation) const |
QPoint | scrollPosition() const |
void | scrollToAnchor(const QString &anchor) |
QWebSecurityOrigin | securityOrigin() const |
void | setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()) |
void | setFocus() |
void | setHtml(const QString &html, const QUrl &baseUrl = QUrl()) |
void | setScrollBarPolicy(Qt::Orientation orientation, Qt::ScrollBarPolicy policy) |
void | setScrollBarValue(Qt::Orientation orientation, int value) |
void | setScrollPosition(const QPoint &pos) |
void | setTextSizeMultiplier(qreal factor) |
void | setUrl(const QUrl &url) |
void | setZoomFactor(qreal factor) |
qreal | textSizeMultiplier() const |
QString | title() const |
QString | toHtml() const |
QString | toPlainText() const |
QUrl | url() const |
qreal | zoomFactor() const |
Reimplemented Public Functions
virtual bool | event(QEvent *e) override |
Public Slots
QVariant | evaluateJavaScript(const QString &scriptSource) |
void | print(QPrinter *printer) const |
Signals
void | contentsSizeChanged(const QSize &size) |
void | iconChanged() |
void | initialLayoutCompleted() |
void | javaScriptWindowObjectCleared() |
void | loadFinished(bool ok) |
void | loadStarted() |
void | pageChanged() |
void | provisionalLoad() |
void | titleChanged(const QString &title) |
void | urlChanged(const QUrl &url) |
Detailed Description
The QWebFrame class represents a frame in a web page.
QWebFrame represents a frame inside a web page. Each QWebPage object contains at least one frame, the main frame, obtained using QWebPage::mainFrame(). Additional frames will be created for HTML <frame>
or <iframe>
elements.
A frame can be loaded using load() or setUrl(). Alternatively, if you have the HTML content readily available, you can use setHtml() instead.
The page() function returns a pointer to the web page object. See Elements of QWebView for an explanation of how web frames are related to a web page and web view.
The QWebFrame class also offers methods to retrieve both the URL currently loaded by the frame (see url()) as well as the URL originally requested to be loaded (see requestedUrl()). These methods make possible the retrieval of the URL before and after a DNS resolution or a redirection occurs during the load process. The requestedUrl() also matches to the URL added to the frame history (QWebHistory) if load is successful.
The title of an HTML frame can be accessed with the title() property. Additionally, a frame may also specify an icon, which can be accessed using the icon() property. If the title or the icon changes, the corresponding titleChanged() and iconChanged() signals will be emitted. The zoomFactor() property can be used to change the overall size of the content displayed in the frame.
QWebFrame objects are created and controlled by the web page. You can connect to the web page's frameCreated() signal to be notified when a new frame is created.
There are multiple ways to programmatically examine the contents of a frame. The hitTestContent() function can be used to find elements by coordinate. For access to the underlying DOM tree, there is documentElement(), findAllElements() and findFirstElement().
A QWebFrame can be printed onto a QPrinter using the print() function. This function is marked as a slot and can be conveniently connected to QPrintPreviewDialog's paintRequested() signal.
See also QWebPage.
Member Type Documentation
enum QWebFrame::RenderLayer
flags QWebFrame::RenderLayers
This enum describes the layers available for rendering using render(). The layers can be OR-ed together from the following list:
Constant | Value | Description |
---|---|---|
QWebFrame::ContentsLayer | 0x10 | The web content of the frame |
QWebFrame::ScrollBarLayer | 0x20 | The scrollbars of the frame |
QWebFrame::PanIconLayer | 0x40 | The icon used when panning the frame |
QWebFrame::AllLayers | 0xff | Includes all the above layers |
The RenderLayers type is a typedef for QFlags<RenderLayer>. It stores an OR combination of RenderLayer values.
enum QWebFrame::ValueOwnership
Property Documentation
baseUrl : const QUrl
This property holds the base URL of the frame, can be used to resolve relative URLs
This property was introduced in Qt 4.6.
Access functions:
QUrl | baseUrl() const |
contentsSize : const QSize
This property holds the size of the contents in this frame
Access functions:
QSize | contentsSize() const |
See also contentsSizeChanged().
focus : const bool
Returns true if this frame has keyboard input focus; otherwise, returns false.
This property was introduced in Qt 4.6.
Access functions:
bool | hasFocus() const |
icon : const QIcon
This property holds the icon associated with this frame
Access functions:
QIcon | icon() const |
See also iconChanged() and QWebSettings::iconForUrl().
requestedUrl : const QUrl
The URL requested to loaded by the frame currently viewed. The URL may differ from the one returned by url() if a DNS resolution or a redirection occurs.
This property was introduced in Qt 4.6.
Access functions:
QUrl | requestedUrl() const |
scrollPosition : QPoint
This property holds the position the frame is currently scrolled to.
This property was introduced in Qt 4.5.
Access functions:
QPoint | scrollPosition() const |
void | setScrollPosition(const QPoint &pos) |
title : const QString
This property holds the title of the frame as defined by the HTML <title> element
Access functions:
QString | title() const |
See also titleChanged().
url : QUrl
This property holds the url of the frame currently viewed
Setting this property clears the view and loads the URL.
By default, this property contains an empty, invalid URL.
Access functions:
QUrl | url() const |
void | setUrl(const QUrl &url) |
See also urlChanged().
zoomFactor : qreal
This property holds the zoom factor for the frame
This property was introduced in Qt 4.5.
Access functions:
qreal | zoomFactor() const |
void | setZoomFactor(qreal factor) |
Member Function Documentation
void QWebFrame::addToJavaScriptWindowObject(const QString &name, QObject *object, QWebFrame::ValueOwnership ownership = QtOwnership)
QList<QWebFrame *> QWebFrame::childFrames() const
Returns a list of all frames that are direct children of this frame.
See also parentFrame().
[signal]
void QWebFrame::contentsSizeChanged(const QSize &size)
QWebElement QWebFrame::documentElement() const
Returns the document element of this frame.
The document element provides access to the entire structured content of the frame.
This function was introduced in Qt 4.6.
[slot]
QVariant QWebFrame::evaluateJavaScript(const QString &scriptSource)
Evaluates the JavaScript defined by scriptSource using this frame as context and returns the result of the last executed statement.
Note: This method may be very inefficient if scriptSource returns a DOM element as a result. For example, evaluation of the next innocuously looking code may take a lot of CPU and memory to execute:
var img = document.createElement('img'); document.getElementById(\"foo\").appendChild(img);
This code returns appended DOM element, which is converted to QVariantMap containing all its properties. To avoid this issue you can add "true" after the last statement.
See also addToJavaScriptWindowObject(), javaScriptWindowObjectCleared(), and QWebElement::evaluateJavaScript().
[override virtual]
bool QWebFrame::event(QEvent *e)
QWebElementCollection QWebFrame::findAllElements(const QString &selectorQuery) const
Returns a new list of elements matching the given CSS selector selectorQuery. If there are no matching elements, an empty list is returned.
Standard CSS selector syntax is used for the query.
This method is equivalent to Document::querySelectorAll in the DOM Selectors API.
This function was introduced in Qt 4.6.
See also QWebElement::findAll().
QWebElement QWebFrame::findFirstElement(const QString &selectorQuery) const
Returns the first element in the frame's document that matches the given CSS selector selectorQuery. If there is no matching element, a null element is returned.
Standard CSS selector syntax is used for the query.
This method is equivalent to Document::querySelector in the DOM Selectors API.
This function was introduced in Qt 4.6.
See also QWebElement::findFirst().
QString QWebFrame::frameName() const
The name of this frame as defined by the parent frame.
QRect QWebFrame::geometry() const
Return the geometry of the frame relative to it's parent frame.
QWebHitTestResult QWebFrame::hitTestContent(const QPoint &pos) const
Performs a hit test on the frame contents at the given position pos and returns the hit test result.
[signal]
void QWebFrame::iconChanged()
[signal]
void QWebFrame::initialLayoutCompleted()
[signal]
void QWebFrame::javaScriptWindowObjectCleared()
void QWebFrame::load(const QUrl &url)
Loads url into this frame.
Note: The view remains the same until enough data has arrived to display the new url.
See also setUrl(), setHtml(), and setContent().
void QWebFrame::load(const QNetworkRequest &req, QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, const QByteArray &body = QByteArray())
Loads a network request, req, into this frame, using the method specified in operation.
body is optional and is only used for POST operations.
Note: The view remains the same until enough data has arrived to display the new content.
See also setUrl().
[signal]
void QWebFrame::loadFinished(bool ok)
[signal]
void QWebFrame::loadStarted()
QMultiMap<QString, QString> QWebFrame::metaData() const
Returns the meta data in this frame as a QMultiMap
The meta data consists of the name and content attributes of the of the <meta>
tags in the HTML document.
For example:
<html> <head> <meta name="description" content="This document is a tutorial about Qt development"> <meta name="keywords" content="Qt, WebKit, Programming"> </head> ... </html>
Given the above HTML code the metaData() function will return a map with two entries:
Key | Value |
---|---|
"description" | "This document is a tutorial about Qt development" |
"keywords" | "Qt, WebKit, Programming" |
This function returns a multi map to support multiple meta tags with the same attribute name.
This function was introduced in Qt 4.5.
QWebPage *QWebFrame::page() const
The web page that contains this frame.
See also pageChanged().
[signal]
void QWebFrame::pageChanged()
QWebFrame *QWebFrame::parentFrame() const
Returns the parent frame of this frame, or 0 if the frame is the web pages main frame.
This is equivalent to qobject_cast<QWebFrame*>(frame->parent()).
See also childFrames().
QPoint QWebFrame::pos() const
Returns the position of the frame relative to it's parent frame.
[slot]
void QWebFrame::print(QPrinter *printer) const
Prints the frame to the given printer.
See also render().
[signal]
void QWebFrame::provisionalLoad()
void QWebFrame::render(QPainter *painter, const QRegion &clip = QRegion())
Render the frame into painter clipping to clip.
void QWebFrame::render(QPainter *painter, QWebFrame::RenderLayers layer, const QRegion &clip = QRegion())
Render the layer of the frame using painter clipping to clip.
This function was introduced in Qt 4.6.
See also print().
void QWebFrame::scroll(int dx, int dy)
Scrolls the frame dx pixels to the right and dy pixels downward. Both dx and dy may be negative.
This function was introduced in Qt 4.5.
See also QWebFrame::scrollPosition.
QRect QWebFrame::scrollBarGeometry(Qt::Orientation orientation) const
Returns the geometry for the scrollbar with orientation orientation.
If the scrollbar does not exist an empty rect is returned.
This function was introduced in Qt 4.6.
int QWebFrame::scrollBarMaximum(Qt::Orientation orientation) const
Returns the maximum value for the scrollbar with orientation orientation, or 0 if no scrollbar is found for orientation.
See also scrollBarMinimum().
int QWebFrame::scrollBarMinimum(Qt::Orientation orientation) const
Returns the minimum value for the scrollbar with orientation orientation.
The minimum value is always 0.
See also scrollBarMaximum().
Qt::ScrollBarPolicy QWebFrame::scrollBarPolicy(Qt::Orientation orientation) const
Returns the scrollbar policy for the scrollbar defined by orientation.
See also setScrollBarPolicy().
int QWebFrame::scrollBarValue(Qt::Orientation orientation) const
Returns the current value for the scrollbar with orientation orientation, or 0 if no scrollbar is found for orientation.
See also setScrollBarValue(), scrollBarMinimum(), and scrollBarMaximum().
void QWebFrame::scrollToAnchor(const QString &anchor)
Scrolls the frame to the given anchor name.
This function was introduced in Qt 4.7.
QWebSecurityOrigin QWebFrame::securityOrigin() const
Returns the frame's security origin.
This function was introduced in Qt 4.5.
void QWebFrame::setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl())
Sets the content of this frame to the specified content data. If the mimeType argument is empty it is currently assumed that the content is HTML but in future versions we may introduce auto-detection.
External objects referenced in the content are located relative to baseUrl.
The data is loaded immediately; external objects are loaded asynchronously.
Note: This method will not affect session or global history for the frame.
See also toHtml() and setHtml().
void QWebFrame::setFocus()
Gives keyboard input focus to this frame.
This function was introduced in Qt 4.6.
See also hasFocus().
void QWebFrame::setHtml(const QString &html, const QUrl &baseUrl = QUrl())
Sets the content of this frame to html. baseUrl is optional and used to resolve relative URLs in the document, such as referenced images or stylesheets.
The html is loaded immediately; external objects are loaded asynchronously.
If a script in the html runs longer than the default script timeout (currently 10 seconds), for example due to being blocked by a modal JavaScript alert dialog, this method will return as soon as possible after the timeout and any subsequent html will be loaded asynchronously.
When using this method WebKit assumes that external resources such as JavaScript programs or style sheets are encoded in UTF-8 unless otherwise specified. For example, the encoding of an external script can be specified through the charset attribute of the HTML script tag. It is also possible for the encoding to be specified by web server.
This is a convenience function equivalent to setContent(html, "text/html", baseUrl).
Note: This method will not affect session or global history for the frame.
Warning: This function works only for HTML, for other mime types (i.e. XHTML, SVG) setContent() should be used instead.
See also toHtml(), setContent(), and load().
void QWebFrame::setScrollBarPolicy(Qt::Orientation orientation, Qt::ScrollBarPolicy policy)
Sets the scrollbar policy for the scrollbar defined by orientation to policy.
See also scrollBarPolicy().
void QWebFrame::setScrollBarValue(Qt::Orientation orientation, int value)
Sets the current value for the scrollbar with orientation orientation.
The scrollbar forces the value to be within the legal range: minimum <= value <= maximum.
Changing the value also updates the thumb position.
See also scrollBarValue(), scrollBarMinimum(), and scrollBarMaximum().
void QWebFrame::setTextSizeMultiplier(qreal factor)
Sets the value of the multiplier used to scale the text in a Web frame to the factor specified.
See also textSizeMultiplier().
qreal QWebFrame::textSizeMultiplier() const
Returns the value of the multiplier used to scale the text in a Web frame.
See also setTextSizeMultiplier().
[signal]
void QWebFrame::titleChanged(const QString &title)
QString QWebFrame::toHtml() const
Returns the frame's content as HTML, enclosed in HTML and BODY tags.
See also setHtml() and toPlainText().
QString QWebFrame::toPlainText() const
Returns the content of this frame converted to plain text, completely stripped of all HTML formatting.
See also toHtml().