2016-02-25 3 views
1

У меня возникла проблема с использованием QWebChannel для доступа к объекту из JavaScript. В настоящее время я использую Qt5.4.2.qt.webChannelTransport undefined в QWebEngineView

Вот мой CPP код:

myObject::myObject(QWidget *parent) 
: QMainWindow(parent) 
{ 

    QWebEngineView* m_pView = new QWebEngineView(this); 

    QWebChannel channel; 
    channel.registerObject(QString("myObject"), this); 

    m_pView->load(QUrl("file:///D:/index.html")); 

    setCentralWidget(m_pView); 

} 

В моей index.html, я в том числе qwebchannel.js:

<script type="text/javascript" src="qrc:///qtwebchannel/qwebchannel.js"></script>

И в моем файле JavaScript, я пытаюсь получить свой объект как это:

new QWebChannel(qt.webChannelTransport, function(channel) { 

var myObject = channel.objects.myObject; 

}); 

Однако, я получить следующее сообщение об ошибке в консоли:

Error: qt is not defined

Я также попытался заменить его navigator.qtWebChannelTransport, но я получил:

Error: transport is not defined

Может кто-нибудь сказать мне, что я сделал не так? Благодарю.

Редактировать: Доступен ли qt.webChannelTransport только с Qt5.5? Кажется, что когда я прочитал документ QWebEnginePage::setWebChannel ...

ответ

1

Правильно.

QWebChannel интеграция с QWebEngine возможна только с версии 5.5, как указано here от Milian, основного разработчика модуля.

0

Для других пользователей, имеющих такую ​​же проблему, но используя Qt 5.5+, убедитесь, что у вас есть QT += webchannel в вашем файле .pro.

0

Вы должны установитьWebChannel перед загрузкой url

+0

Это не очень хороший ответ. Добавьте дополнительную информацию или пример. Это скорее комментарий. –

Смежные вопросы