2016-06-22 4 views
0

Я пытаюсь добавить WebView в свой графический интерфейс. Во-первых, приложение неожиданно разбилось каждый раз. Я решил, что мне, вероятно, нужно было импортировать WebKit 3.0 вместе с WebView 1.1. После добавления требуемого оператора импорта я пытаюсь запустить, но он говорит, что module "QtWebKit" is not installed. Я проверил папку include и ее действительно нет. enter image description here Так что мой вопрос в том, что QtWebKit - это то, что мне нужно, как его установить?QT WebView/WebKit issue

Update: Когда этот код существует в моем .qml файл, то приложение падает без запуска:

WebEngineView{ 
      anchors.fill: parent 
      url: "http://www.google.com" 
     } 

Это оператор импорта я использую на QT 5.6:

import QtWebEngine 1.1 

Это ошибка ошибки сегментации, возникающая из-за наличия вышеуказанного кода:

enter image description here

Полный демо-код:

import QtQuick 2.6 
import QtQuick.Controls 1.5 as QC 
import QtQuick.Controls.Styles 1.4 
import QtGraphicalEffects 1.0 
import QtQuick.Dialogs 1.2 
import QtMultimedia 5.6 
import Qt.labs.controls 1.0 
import QtWebEngine 1.2 

ApplicationWindow { 
    height: 640 
    width: 480 
    visible: true 
    Loader{ 
     anchors.fill: parent 
     sourceComponent: webComponent 
    } 
    Component{ 
     id: webComponent 
     WebEngineView{ 
      anchors.fill: parent 
      id: web 
      profile: WebEngineProfile { 
       storageName: "Default" 
      } 
     } 
    } 
} 
+0

В Qt есть 2 разных 'WebView' s: один из модуля Qt WebKit (который теперь устарел) и один из модуля Qt WebView. Они НЕ связаны вообще! Я думаю, что было плохой ошибкой использовать одно и то же имя для двух разных классов. В любом случае, разместите более подробную информацию о своем сбое. – JKSH

+0

@JKSH Можете ли вы, пожалуйста, сослаться на мои комментарии на единственный ответ? –

+0

Не могли бы вы предоставить подробную информацию о своих авариях? (Как вы вызываете сбои? Какие сообщения об ошибках вы видите? Что вы видите при запуске вашей программы с помощью отладчика?) Без этой информации я не могу предоставить никаких полезных комментариев. – JKSH

ответ

2

Трассировка стека вашего отладчика показывает, что ваш сбой происходит в функциях OpenGL Qt. Не забудьте позвонить QtWebEngine::initialize(), прежде чем вы начнете использовать Qt WebEngine.

Обратите также внимание:

  • Qt WebView представляет собой легкий модуль для запуска веба-родной двигателя ваших мобильных ОС. Его основной тип QML называется WebView.
  • Qt WebKit - это тяжеловесный модуль для запуска полностью автономного веб-движка. Его основной тип QML также называют WebView, но это полностью не связано с другим WebView. Этот модуль теперь устарел.
  • Qt WebEngine - это тяжеловесный модуль для работы полностью автономного веб-движка. Его основной тип QML называется WebEngineView. Этот модуль предназначен для замены Qt WebKit.
0

Qt WebKit является deprecated module. Возможно, вы можете установить его из источников Qt, но поскольку вы хотите использовать WebView 1.1 (и что вы на Qt5.6), я думаю, что вам лучше использовать Qt WebEngine (использование устаревших модулей не рекомендуется). Вы уже можете увидеть его в своей папке (модули QtWebEngine и QtWebView).

+0

Так что я не должен использовать QtWebView? –

+0

Я добавил QtWebEngineView вместо QtWebView и импортировал QtWebEngine 1.1. Единственная проблема теперь в том, что приложение вызывает ошибку сегментации всякий раз, когда WebEngineView присутствует в моем qml-файле. –

+0

Модуль Qt WebView не устарел, поэтому его можно использовать сегодня. Однако он предназначен для мобильных платформ, и его функциональность довольно ограничена. Если вам нужна консультация о том, следует ли использовать Qt WebView или Qt WebEngine, предоставьте подробную информацию о том, что делает ваше приложение, и какие платформы вы хотите поддерживать. – JKSH