En esta página

QWebEngineView Class

La clase QWebEngineView proporciona un widget que se utiliza para ver y editar documentos web. Más...

Cabecera: #include <QWebEngineView>
CMake: find_package(Qt6 REQUIRED COMPONENTS WebEngineWidgets)
target_link_libraries(mytarget PRIVATE Qt6::WebEngineWidgets)
qmake: QT += webenginewidgets
Hereda: QWidget

Propiedades

Funciones públicas

QWebEngineView(QWidget *parent = nullptr)
(since 6.4) QWebEngineView(QWebEnginePage *page, QWidget *parent = nullptr)
(since 6.4) QWebEngineView(QWebEngineProfile *profile, QWidget *parent = nullptr)
virtual ~QWebEngineView()
QMenu *createStandardContextMenu()
void findText(const QString &subString, QWebEnginePage::FindFlags options = {}, const std::function<void (const QWebEngineFindTextResult &)> &resultCallback = std::function<void(const QWebEngineFindTextResult &)>())
bool hasSelection() const
QWebEngineHistory *history() const
QIcon icon() const
QUrl iconUrl() const
(since 6.2) QWebEngineContextMenuRequest *lastContextMenuRequest() const
void load(const QUrl &url)
void load(const QWebEngineHttpRequest &request)
QWebEnginePage *page() const
QAction *pageAction(QWebEnginePage::WebAction action) const
(since 6.2) void print(QPrinter *printer)
(since 6.2) void printToPdf(const QString &filePath, const QPageLayout &layout = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF()), const QPageRanges &ranges = {})
(since 6.2) void printToPdf(const std::function<void (const QByteArray &)> &resultCallback, const QPageLayout &layout = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF()), const QPageRanges &ranges = {})
QString selectedText() const
void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl())
void setHtml(const QString &html, const QUrl &baseUrl = QUrl())
void setPage(QWebEnginePage *page)
void setUrl(const QUrl &url)
void setZoomFactor(qreal factor)
QWebEngineSettings *settings() const
QString title() const
void triggerPageAction(QWebEnginePage::WebAction action, bool checked = false)
QUrl url() const
qreal zoomFactor() const

Funciones públicas reimplementadas

virtual QSize sizeHint() const override

Ranuras públicas

void back()
void forward()
void reload()
void stop()

Señales

void iconChanged(const QIcon &icon)
void iconUrlChanged(const QUrl &url)
void loadFinished(bool ok)
void loadProgress(int progress)
void loadStarted()
(since 6.2) void pdfPrintingFinished(const QString &filePath, bool success)
(since 6.2) void printFinished(bool success)
(since 6.2) void printRequested()
(since 6.8) void printRequestedByFrame(QWebEngineFrame frame)
void renderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode)
void selectionChanged()
void titleChanged(const QString &title)
void urlChanged(const QUrl &url)

Miembros públicos estáticos

(since 6.2) QWebEngineView *forPage(const QWebEnginePage *page)

Funciones protegidas

virtual QWebEngineView *createWindow(QWebEnginePage::WebWindowType type)

Funciones protegidas reimplementadas

virtual void closeEvent(QCloseEvent *event) override
virtual void contextMenuEvent(QContextMenuEvent *event) override
virtual void dragEnterEvent(QDragEnterEvent *e) override
virtual void dragLeaveEvent(QDragLeaveEvent *e) override
virtual void dragMoveEvent(QDragMoveEvent *e) override
virtual void dropEvent(QDropEvent *e) override
virtual bool event(QEvent *ev) override
virtual void hideEvent(QHideEvent *event) override
virtual void showEvent(QShowEvent *event) override

Descripción detallada

Una vista web es el componente widget principal del módulo de navegación web Qt WebEngine. Puede utilizarse en varias aplicaciones para mostrar contenido web en directo desde Internet.

Un sitio web puede cargarse en una vista web con la función load(). Siempre se utiliza el método GET para cargar URLs.

Como todos los widgets Qt, la función show() debe ser invocada para mostrar la vista web. El siguiente fragmento lo ilustra:

    QWebEngineView view;
    view.load(QUrl("https://qt-project.org/"));
    view.resize(1024, 750);
    view.show();

Alternativamente, setUrl() puede utilizarse para cargar un sitio web. Si dispone fácilmente del contenido HTML, puede utilizar setHtml() en su lugar.

La señal loadStarted() se emite cuando la vista comienza a cargarse y la señal loadProgress() se emite cada vez que un elemento de la vista web termina de cargarse, como una imagen incrustada o un script. La señal loadFinished() se emite cuando la vista se ha cargado completamente. Su argumento, true o false, indica si la carga se ha realizado correctamente o no.

La función page() devuelve un puntero a un objeto de página web. Una QWebEngineView contiene un QWebEnginePage, que a su vez permite acceder al QWebEngineHistory en el contexto de la página.

Se puede acceder al título de un documento HTML con la propiedad title(). Además, un sitio web puede especificar un icono, al que se puede acceder mediante la propiedad icon() o su URL mediante la propiedad iconUrl(). Si el título o el icono cambian, se emitirán las correspondientes señales titleChanged(), iconChanged() y iconUrlChanged(). La propiedad zoomFactor() permite ampliar el contenido de la página web mediante un factor de escala.

El widget dispone de un menú contextual adaptado al elemento en cuestión, que incluye acciones útiles en un navegador. Para un menú contextual personalizado, o para incrustar acciones en un menú o barra de herramientas, las acciones individuales están disponibles a través de pageAction(). La vista web mantiene el estado de las acciones devueltas, pero permite modificar las propiedades de las acciones, como text o icon. La semántica de las acciones también puede activarse directamente a través de triggerPageAction().

Si desea dar soporte a sitios web que permiten al usuario abrir nuevas ventanas, como ventanas emergentes, puede subclasificar QWebEngineView y reimplementar la función createWindow().

Véase también WebEngineWidgets Simple Browser Example y WebEngine Content Manipulation Example.

Documentación de propiedades

[read-only] hasSelection : bool

Esta propiedad indica si esta página contiene contenido seleccionado o no.

Por defecto, esta propiedad es false.

Funciones de acceso:

bool hasSelection() const

Véase también selectionChanged().

[read-only] icon : QIcon

Esta propiedad contiene el icono asociado a la página visualizada actualmente.

Por defecto, esta propiedad contiene un icono nulo.

Funciones de acceso:

QIcon icon() const

Señal de notificador:

void iconChanged(const QIcon &icon)

Véase también iconChanged(), iconUrl(), y iconUrlChanged().

[read-only] iconUrl : QUrl

Esta propiedad contiene la URL del icono asociado a la página que se está visualizando.

Por defecto, esta propiedad contiene una URL vacía.

Funciones de acceso:

QUrl iconUrl() const

Señal del notificador:

void iconUrlChanged(const QUrl &url)

Véase también iconUrlChanged(), icon(), y iconChanged().

[read-only] selectedText : QString

Esta propiedad contiene el texto actualmente seleccionado.

Por defecto, esta propiedad contiene una cadena vacía.

Funciones de acceso:

QString selectedText() const

Véase también findText() y selectionChanged().

[read-only] title : QString

Esta propiedad contiene el título de la página definido por el elemento HTML <title>.

Equivale a QWebEnginePage::title().

Funciones de acceso:

QString title() const

Véase también titleChanged().

url : QUrl

Esta propiedad contiene la URL de la página web actualmente visualizada.

Al establecer esta propiedad se borra la vista y se carga la URL.

Por defecto, esta propiedad contiene una URL vacía e inválida.

Funciones de acceso:

QUrl url() const
void setUrl(const QUrl &url)

Véase también load() y urlChanged().

zoomFactor : qreal

Esta propiedad contiene el factor de zoom para la vista.

Los valores válidos están comprendidos entre 0.25 y 5.0. El factor por defecto es 1.0.

Funciones de acceso:

qreal zoomFactor() const
void setZoomFactor(qreal factor)

Documentación de las funciones miembro

[explicit] QWebEngineView::QWebEngineView(QWidget *parent = nullptr)

Construye una vista web vacía con el padre parent.

Véase también load().

[explicit, since 6.4] QWebEngineView::QWebEngineView(QWebEnginePage *page, QWidget *parent = nullptr)

Construye una vista web que contiene page con el padre parent.

Nota: No se toma la propiedad de page, y depende de quien lo llama asegurarse de que se elimina.

Esta función se introdujo en Qt 6.4.

Véase también load() y setPage().

[explicit, since 6.4] QWebEngineView::QWebEngineView(QWebEngineProfile *profile, QWidget *parent = nullptr)

Construye una vista web vacía utilizando profile con el padre parent.

Nota: La propiedad del objeto profile no se toma y debería sobrevivir a la vista.

Esta función se introdujo en Qt 6.4.

Véase también load().

[virtual noexcept] QWebEngineView::~QWebEngineView()

Destruye la vista web.

[slot] void QWebEngineView::back()

Ranura de conveniencia que carga el documento anterior en la lista de documentos construida por enlaces de navegación. No hace nada si no hay documento anterior.

Es equivalente a:

view->page()->triggerAction(QWebEnginePage::Back);

Véase también forward() y pageAction().

[override virtual protected] void QWebEngineView::closeEvent(QCloseEvent *event)

Reimplementa: QWidget::closeEvent(QCloseEvent *event).

[override virtual protected] void QWebEngineView::contextMenuEvent(QContextMenuEvent *event)

Reimplementa: QWidget::contextMenuEvent(QContextMenuEvent *event).

QMenu *QWebEngineView::createStandardContextMenu()

Crea un menú contextual estándar y devuelve un puntero al mismo.

[virtual protected] QWebEngineView *QWebEngineView::createWindow(QWebEnginePage::WebWindowType type)

Esta función se llama desde el método createWindow() del QWebEnginePage asociado cada vez que la página quiere crear una nueva ventana del type dado. Por ejemplo, cuando se emite una petición JavaScript para abrir un documento en una nueva ventana.

Nota: Si se reimplementa el método createWindow() de la página asociada, no se llama a este método, a menos que se haga explícitamente en la reimplementación.

Véase también QWebEnginePage::createWindow().

[override virtual protected] void QWebEngineView::dragEnterEvent(QDragEnterEvent *e)

Reimplementa: QWidget::dragEnterEvent(QDragEnterEvent *event).

[override virtual protected] void QWebEngineView::dragLeaveEvent(QDragLeaveEvent *e)

Reimplementa: QWidget::dragLeaveEvent(QDragLeaveEvent *event).

[override virtual protected] void QWebEngineView::dragMoveEvent(QDragMoveEvent *e)

Reimplementa: QWidget::dragMoveEvent(QDragMoveEvent *event).

[override virtual protected] void QWebEngineView::dropEvent(QDropEvent *e)

Reimplementa: QWidget::dropEvent(QDropEvent *event).

[override virtual protected] bool QWebEngineView::event(QEvent *ev)

Reimplementa: QWidget::event(QEvent *event).

void QWebEngineView::findText(const QString &subString, QWebEnginePage::FindFlags options = {}, const std::function<void (const QWebEngineFindTextResult &)> &resultCallback = std::function<void(const QWebEngineFindTextResult &)>())

Busca la cadena especificada, subString, en la página, utilizando la dirección options.

Para borrar la selección, basta con pasar una cadena vacía.

resultCallback debe recibir un parámetro QWebEngineFindTextResult.

Advertencia: Garantizamos que la llamada de retorno (resultCallback) se llama siempre, pero podría hacerse durante la destrucción de la página. Cuando se elimina QWebEnginePage, la llamada de retorno se lanza con un valor no válido y no es seguro utilizar la instancia correspondiente de QWebEnginePage o QWebEngineView dentro de ella.

Véase también selectedText() y selectionChanged().

[static, since 6.2] QWebEngineView *QWebEngineView::forPage(const QWebEnginePage *page)

Devuelve la vista, si existe, asociada a page.

Esta función se introdujo en Qt 6.2.

Véase también page() y setPage().

[slot] void QWebEngineView::forward()

Ranura de conveniencia que carga el siguiente documento en la lista de documentos construida por los enlaces de navegación. No hace nada si no hay documento siguiente.

Es equivalente a:

view->page()->triggerAction(QWebEnginePage::Forward);

Véase también back() y pageAction().

[override virtual protected] void QWebEngineView::hideEvent(QHideEvent *event)

Reimplementa: QWidget::hideEvent(QHideEvent *event).

QWebEngineHistory *QWebEngineView::history() const

Devuelve un puntero al historial de páginas web navegadas de la vista.

Es equivalente a:

view->page()->history();

[signal] void QWebEngineView::iconChanged(const QIcon &icon)

Esta señal se emite cuando se cambia el icono ("favicon") asociado a la vista. El nuevo icono se especifica en icon.

Nota: Señal notificadora para la propiedad icon.

Véase también icon(), iconUrl(), y iconUrlChanged().

[signal] void QWebEngineView::iconUrlChanged(const QUrl &url)

Esta señal se emite cuando cambia la URL del icono ("favicon") asociado a la vista. La nueva URL se especifica en url.

Nota: Señal notificadora para la propiedad iconUrl.

Véase también iconUrl(), icon(), y iconChanged().

[since 6.2] QWebEngineContextMenuRequest *QWebEngineView::lastContextMenuRequest() const

Devuelve datos adicionales sobre el menú contextual actual. Sólo se garantiza su validez durante la llamada a contextMenuEvent().

Esta función se introdujo en Qt 6.2.

Véase también createStandardContextMenu().

void QWebEngineView::load(const QUrl &url)

Carga la dirección url especificada y la muestra.

Nota: La vista permanece igual hasta que llegan suficientes datos para mostrar la nueva URL.

Véase también load(), setUrl(), url(), urlChanged() y QUrl::fromUserInput().

void QWebEngineView::load(const QWebEngineHttpRequest &request)

Emite el request especificado y carga la respuesta.

Véase también load(), setUrl(), url(), urlChanged() y QUrl::fromUserInput().

[signal] void QWebEngineView::loadFinished(bool ok)

Esta señal se emite cuando ha finalizado la carga de la página. ok indicará si la carga se ha realizado correctamente o se ha producido un error.

Véase también loadStarted().

[signal] void QWebEngineView::loadProgress(int progress)

Esta señal se emite cada vez que un elemento de la vista web termina de cargarse, como una imagen incrustada o un script. Por lo tanto, rastrea el progreso colectivo de la carga de la vista web.

El valor actual es proporcionado por progress y escala de 0 a 100, que es el rango por defecto de QProgressBar.

Véase también loadStarted() y loadFinished().

[signal] void QWebEngineView::loadStarted()

Esta señal se emite cuando se inicia una nueva carga de la página.

Véase también loadProgress() y loadFinished().

QWebEnginePage *QWebEngineView::page() const

Devuelve un puntero a la página web subyacente.

Véase también setPage().

QAction *QWebEngineView::pageAction(QWebEnginePage::WebAction action) const

Devuelve un puntero a QAction que encapsula la acción web especificada action. Esta función también establecerá un icono con estilo predeterminado en QAction si carece de él.

[signal, since 6.2] void QWebEngineView::pdfPrintingFinished(const QString &filePath, bool success)

Esta señal se emite cuando ha finalizado la impresión de la página web en un archivo PDF. filePath contendrá la ruta en la que se solicitó la creación del archivo, y success será true si el archivo se creó correctamente y false en caso contrario.

Esta función se introdujo en Qt 6.2.

Véase también printToPdf().

[since 6.2] void QWebEngineView::print(QPrinter *printer)

Renderiza el contenido actual de la página en un documento PDF temporal y, a continuación, lo imprime utilizando printer.

La configuración para crear e imprimir el documento PDF se recuperará del objeto printer.

Al finalizar, se emite la señal printFinished() con el valor true en caso de éxito o false en caso de error.

Es responsabilidad del usuario asegurarse de que printer sigue siendo válido hasta que se emita printFinished(). Si la página se destruye antes de que se emita printFinished(), la impresión continuará ejecutándose en segundo plano durante unos instantes. Los usuarios deben asegurarse de que la impresión sigue siendo válida hasta que su estado deje de estar activo.

Nota: La impresión se ejecuta en el proceso del navegador, que por defecto no está aislado.

Nota: El paso de generación de datos de la impresión puede interrumpirse durante un breve periodo de tiempo utilizando la acción web QWebEnginePage::Stop.

Nota: Esta función rasteriza el resultado al renderizarlo en printer. Por favor, considere aumentar la resolución por defecto de printer al menos a 300 DPI, o utilizar printToPdf() para producir archivos PDF de forma más efectiva.

Esta función se introdujo en Qt 6.2.

[signal, since 6.2] void QWebEngineView::printFinished(bool success)

Esta señal se emite cuando la impresión solicitada con print() ha finalizado. El parámetro success es true para éxito o false para fallo.

Esta función se introdujo en Qt 6.2.

Véase también print().

[signal, since 6.2] void QWebEngineView::printRequested()

Esta señal se emite cuando se llama al método JavaScript window.print() o el usuario pulsa el botón de impresión del complemento del visor de PDF. Normalmente, el controlador de la señal puede simplemente llamar a print().

Desde la versión 6.8, esta señal sólo se emite para el fotograma principal, en lugar de emitirse para cualquier fotograma que solicite la impresión.

Esta función se introdujo en Qt 6.2.

Véase también printRequestedByFrame() y print().

[signal, since 6.8] void QWebEngineView::printRequestedByFrame(QWebEngineFrame frame)

Esta señal se emite cuando se llama al método JavaScript window.print() en frame. Si el marco es el marco principal, se emite printRequested en su lugar.

Esta función se introdujo en Qt 6.8.

Véase también printRequested() y print().

[since 6.2] void QWebEngineView::printToPdf(const QString &filePath, const QPageLayout &layout = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF()), const QPageRanges &ranges = {})

Renderiza el contenido actual de la página en un documento PDF y lo guarda en la ubicación especificada en filePath. El tamaño de página y la orientación del documento PDF producido se toman de los valores especificados en layout, mientras que el rango de páginas impresas se toma de ranges siendo el valor por defecto imprimir todas las páginas.

Este método emite una petición asíncrona para imprimir la página web en un PDF y devuelve inmediatamente. Para conocer el resultado de la solicitud, conéctese a la señal pdfPrintingFinished().

Si ya existe un archivo en la ruta de archivo proporcionada, se sobrescribirá.

Esta función se introdujo en Qt 6.2.

Véase también pdfPrintingFinished().

[since 6.2] void QWebEngineView::printToPdf(const std::function<void (const QByteArray &)> &resultCallback, const QPageLayout &layout = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF()), const QPageRanges &ranges = {})

Renderiza el contenido actual de la página en un documento PDF y devuelve una matriz de bytes que contiene los datos PDF como parámetro a resultCallback. El tamaño de página y la orientación del documento PDF producido se toman de los valores especificados en layout, mientras que el rango de páginas impresas se toma de ranges siendo el valor por defecto imprimir todas las páginas.

resultCallback debe tomar como parámetro una referencia constante a QByteArray. Si la impresión se ha realizado correctamente, esta matriz de bytes contendrá los datos del PDF; en caso contrario, la matriz de bytes estará vacía.

Advertencia: Garantizamos que la llamada de retorno (resultCallback) se llama siempre, pero podría hacerse durante la destrucción de la página. Cuando se elimina QWebEnginePage, la llamada de retorno se lanza con un valor no válido y no es seguro utilizar la instancia correspondiente de QWebEnginePage o QWebEngineView dentro de ella.

Esta función se introdujo en Qt 6.2.

[slot] void QWebEngineView::reload()

Vuelve a cargar el documento actual.

Véase también stop(), pageAction() y loadStarted().

[signal] void QWebEngineView::renderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode)

Esta señal se emite cuando el proceso de renderizado finaliza con un estado de salida distinto de cero. terminationStatus es el estado de finalización del proceso y exitCode es el código de estado con el que finalizó el proceso.

[signal] void QWebEngineView::selectionChanged()

Esta señal se emite cada vez que cambia la selección.

Nota: Cuando se utiliza el ratón para seleccionar texto haciendo clic con el botón izquierdo y arrastrando, la señal se emitirá por cada nuevo carácter seleccionado, y no al soltar el botón izquierdo del ratón.

Véase también selectedText().

void QWebEngineView::setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl())

Establece el contenido de la vista web en data. Si el argumento mimeType está vacío, se asume que el contenido es text/plain,charset=US-ASCII.

Los objetos externos a los que se hace referencia en el contenido se ubican en relación con baseUrl. Para que se carguen objetos externos con URL relativas, baseUrl no puede estar vacío.

Los datos se cargan inmediatamente; los objetos externos se cargan de forma asíncrona.

Véase también load(), setHtml() y QWebEnginePage::toHtml().

void QWebEngineView::setHtml(const QString &html, const QUrl &baseUrl = QUrl())

Establece el contenido de la vista web en el contenido especificado de html.

baseUrl es opcional y se utiliza para resolver URLs relativas en el documento, como imágenes referenciadas u hojas de estilo. Por ejemplo, si html se recupera de http://www.example.com/documents/overview.html, que es la URL base, entonces una imagen referenciada con la URL relativa, diagram.png, debería estar en http://www.example.com/documents/diagram.png.

El documento HTML se carga inmediatamente, mientras que los objetos externos se cargan de forma asíncrona.

Cuando se utiliza este método, Qt WebEngine asume que los recursos externos, como programas JavaScript u hojas de estilo, están codificados en UTF-8 a menos que se especifique lo contrario. Por ejemplo, la codificación de un script externo puede especificarse a través del atributo charset de la etiqueta script de HTML. Alternativamente, la codificación puede ser especificada por el servidor web.

Esta función es equivalente a setContent(html, "text/html;charset=UTF-8", baseUrl).

Advertencia: Esta función sólo funciona para HTML. Para otros tipos MIME (como XHTML o SVG), debe utilizarse setContent() en su lugar.

Nota: No se pueden mostrar contenidos de más de 2 MB, porque setHtml() convierte el HTML proporcionado a codificación porcentual y coloca data: delante para crear la URL a la que navega. De este modo, el código proporcionado se convierte en una URL que excede el límite de 2 MB establecido por Chromium. Si el contenido es demasiado grande, la señal loadFinished() se activa con success=false.

Véase también load(), setContent(), QWebEnginePage::toHtml(), y QWebEnginePage::setContent().

void QWebEngineView::setPage(QWebEnginePage *page)

Hace que page sea la nueva página web de la vista web.

El padre QObject de la página proporcionada sigue siendo el propietario del objeto. Si la página actual es hija de la vista web, se eliminará.

Véase también page().

QWebEngineSettings *QWebEngineView::settings() const

Devuelve un puntero al objeto de configuración específico de la vista o página.

Es equivalente a:

view->page()->settings();

[override virtual protected] void QWebEngineView::showEvent(QShowEvent *event)

Reimplementa: QWidget::showEvent(QShowEvent *event).

[override virtual] QSize QWebEngineView::sizeHint() const

Reimplementa una función de acceso para la propiedad: QWidget::sizeHint.

[slot] void QWebEngineView::stop()

Ranura de conveniencia que detiene la carga del documento.

Es equivalente a:

view->page()->triggerAction(QWebEnginePage::Stop);

Véase también reload(), pageAction() y loadFinished().

[signal] void QWebEngineView::titleChanged(const QString &title)

Esta señal se emite cada vez que cambia la dirección title de la vista.

Véase también title().

void QWebEngineView::triggerPageAction(QWebEnginePage::WebAction action, bool checked = false)

Activa la acción especificada action. Si se trata de una acción comprobable, se asume el estado checked especificado.

El siguiente ejemplo activa la acción copiar y, por lo tanto, copia cualquier texto seleccionado en el portapapeles.

view->triggerPageAction(QWebEnginePage::Copy);

Véase también pageAction().

[signal] void QWebEngineView::urlChanged(const QUrl &url)

Esta señal se emite cuando cambia la dirección url de la vista.

Véase también url() y load().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.