QtWebkit как настольное приложение [закрытый] GUI

6
задан Zaid Amir 11 January 2010 в 09:07
поделиться

4 ответа

Это не будет легко: веб-браузеры являются крепостями из-за проблем безопасности. Так что довольно трудно получить от JS на веб-странице чего-то за пределами браузера.

Также Qtwebkit не очень открытый API. Самым большим препятствием в вашем случае является то, что он не предлагает вам доступа к DOM, поэтому вы можете заменить только весь HTML.

Следовательно, вам нужно будет исправить и написать много кода для реализации пропущенных API и функций.

Поскольку qt 4.6 был выпущен, есть Qwebelement ( см. Документы для примеров), поэтому вы можете хотя бы получить доступ к DOM и изменить его. Это сделает много вещей проще. Я предлагаю решить, кто контролирует браузер: будет ли ваше приложение JavaScript, которое звонит снаружи или является приложением действительно в C ++, и вы используете браузер в качестве Smart UI Renderer?

Гораздо простым способом, чтобы сделать вашу идею Было бы начать внутренний веб-сервер, когда ваше приложение запускается, а затем открыть вид QTWebkit, указывая на URL локального сервера. Затем вы можете использовать все стандартные инструменты веб-разработки. Eclipse использует эту технику для его внутренней справочной системы.

4
ответ дан 9 December 2019 в 22:35
поделиться

Для базового использования примеры от Trolltech должны запускаться.

Плюс-сторона подхода QT заключается в том, что выяснение объектов к скрипту относительно легко, см. E.G. здесь . JavaScript в различных встроенных этикетах может затем легко взаимодействовать с C ++ (и, конечно, со сценарием в других окнах, если вы предоставляете поддержку на стороне C ++ для этого). Внизу состоит в том, что API, похоже, еще не совсем стабилен и, похоже, отсутствует поддержка для добавления слушателей событий от JavaScript на объекты C ++ (или, по крайней мере, я не видел, как это должно было сделать).

Размещение пользовательских нарисованных элементов на страницу снова вполне упрощена, вы встраиваете плагины на страницу (например, через <объект> тег) и возврата пользовательских qwidgets из QWebPlugInfactory :: Create () .

На важной веществе, чтобы всегда иметь в виду: призывы к встроенному webkit (например, для оценки JavaScript) всегда должны происходить на главной ните.

2
ответ дан 9 December 2019 в 22:35
поделиться

Я копирую/вставляю кусочки из разных разделов, но вот как я вставляю объект, доступный для javascript, затем я использую javascript для общения с главным приложением. Кажется, работает хорошо...

void MyApi::setWebView( QWebView *view ) {

    QWebPage *page = view->page();
    m_frame = page->mainFrame();

    attachObject();
    connect( m_frame, SIGNAL(javaScriptWindowObjectCleared()), 
        this, SLOT(attachObject()) );

}

void MyApi::attachObject() {

    m_frame->addToJavaScriptWindowObject( QString("MyApi"), this );

}

Это делает объект MyApi существующим в javascript, и я могу вызывать любые слоты, доступные из класса MyApi.

3
ответ дан 9 December 2019 в 22:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: