Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Script. Интеграция WebKit _ QT и Flash

Автор: wander86 12.10.2009, 14:00

Привет. Подскажите, каким образом можно вставить flash ролик в QT проект? Нада, что бы просто баннерок висел, при нажатии на него осуществлялся переход в браузере. Конечно, если возможно, то что бы событие клика перехватывалось, но это не обязательно.
Компилю под винду.

Автор: fsMark 12.10.2009, 14:44

Смотри в сторону http://doc.crossplatform.ru/qt/4.6.x/qwebview.html, он может отобразить html страничку с Flash роликом.

Автор: wander86 12.10.2009, 14:56

Цитата(fsMark @ 12.10.2009, 15:44) *
Смотри в сторону http://doc.crossplatform.ru/qt/4.6.x/qwebview.html, он может отобразить html страничку с Flash роликом.


Странно, пробовал через WebView открывать страницы с флэшем, просто пустота вместо мувиков.

Автор: SABROG 12.10.2009, 15:00

У меня такое, если я запускаю демку browser, то флэшки проигрываются, а если просто кидаю на форму QWebView, то нет.

Автор: wander86 12.10.2009, 15:02

Цитата(SABROG @ 12.10.2009, 16:00) *
У меня такое, если я запускаю демку browser, то флэшки проигрываются, а если просто кидаю на форму QWebView, то нет.


А как вы закидываете, просто как setHtml а там путь к флэше, или нет?

Автор: SABROG 12.10.2009, 15:16

Цитата(wander86 @ 12.10.2009, 16:02) *
Цитата(SABROG @ 12.10.2009, 16:00) *
У меня такое, если я запускаю демку browser, то флэшки проигрываются, а если просто кидаю на форму QWebView, то нет.


А как вы закидываете, просто как setHtml а там путь к флэше, или нет?


Через demo/browser так (с локальных ресурсов он не открывает):

http://www.server.ru/53.swf

А в QWebView дизайнера установка этого url в свойствах виджета ни к чему не приводит, остается белая страница.

Автор: wander86 12.10.2009, 15:23

А через QAxWidget никто не пробовал? Вроде говорят, что через него можно, но как это сделать не найду (-:

Автор: fsMark 12.10.2009, 15:39

Цитата(SABROG @ 12.10.2009, 16:16) *
Через demo/browser так (с локальных ресурсов он не открывает):

http://www.server.ru/53.swf

А в QWebView дизайнера установка этого url в свойствах виджета ни к чему не приводит, остается белая страница.


Насколько я понимаю надо чтобы для страницы было установленно:
page()->settings()->setAttribute(QWebSettings::JavascriptEnabled,true);
page()->settings()->setAttribute(QWebSettings::PluginsEnabled,true);

Автор: wander86 12.10.2009, 15:51

Цитата(fsMark @ 12.10.2009, 16:39) *
Насколько я понимаю надо чтобы для страницы было установленно:
page()->settings()->setAttribute(QWebSettings::JavascriptEnabled,true);
page()->settings()->setAttribute(QWebSettings::PluginsEnabled,true);

Как же прекрасно жить (-: Спасибо, заработало!

Автор: Alex 1.11.2009, 12:07

Цитата(fsMark @ 12.10.2009, 15:39) *
Насколько я понимаю надо чтобы для страницы было установленно:
page()->settings()->setAttribute(QWebSettings::JavascriptEnabled,true);
page()->settings()->setAttribute(QWebSettings::PluginsEnabled,true);

Другой вариант для Windows использовать Qtitan Multimedia (Adobe Flash и Silverlight для Qt) http://www.devmachines.com/qtitanmm_descr.php

Автор: fsMark 1.11.2009, 12:32

Цитата
Qtitan Multimedia Library single license (with source code) for Windows You can modify our source code and royalty-free redistribute the modified libraries. As you can imagine, this does not apply to situations in which you are modifying our code and repackaging our components and selling competing components. $199


Qtitan Multimedia Library single license (without source code) for Windows You can royalty-free redistribute the libraries as part of your applcation or link libraries staticaly. The sources code are not included. $119


200$ за не переносимые сырцы.. уж лучше QWebView)

Автор: trdm 1.11.2009, 17:15

http://www.prog.org.ru/topic_11093_0.html

Автор: mike 10.2.2010, 13:20

Цитата(fsMark @ 12.10.2009, 14:44) *
Смотри в сторону http://doc.crossplatform.ru/qt/4.6.x/qwebview.html, он может отобразить html страничку с Flash роликом.


действительно, может
правда, непосредственно swf'ки грузит только с http, а с файловой системы исключительно обёрнутые в html
печально :cray:
но есть ещё одна сложность: обмен данными между flash и Qt
в браузерах это делается через интерфейсы fscommand и externalCalls в JavaScript
а как можно что-то передать из flash'а в Qt?
или QWebView на это в принципе не способен, и нужно копать в сторону Gnash? кто-нибудь пробовал его ставить на Qt?

Автор: fsMark 10.2.2010, 14:46

Цитата(mike @ 10.2.2010, 13:20) *
а как можно что-то передать из flash'а в Qt?
или QWebView на это в принципе не способен....


Цитата
WebKit supports the Netscape Plugin API


Может оно:
http://trac.webkit.org/wiki/QtWebKitPlugins

Автор: mike 12.2.2010, 12:10

не, там вообще чёрт ногу сломит
правильный ответ (может, пригодится кому):
ui->webView->page()->currentFrame()->addToJavaScriptWindowObject("myObject", new MyObject()); - это из JS в Qt
ui->webView->page()->currentFrame()->evaluateJavaScript("f2('fromQttoJS')"); - это из Qt в JS
а уже из JS во Flash - описанными выше способами

Автор: Dimix 15.12.2010, 15:20

Перечитал тему 2 раза. Так ничего и не понял. Вопрос похожий необходимо повесить баннерок чтобы при клике на него открывался браузер. Я думал все просто сделал так:

QLabel* labelBanner = new QLabel(tr("<a href=\"http://ya.ru/\">Яндекс</a>"));
labelBanner->show();

Оно показывает что ссылка задана но не переходит. А делаю вот так:
QMessageBox::about(0, tr("Баннер"), tr("<a href=\"http://ya.ru/\">Яндекс</a>"));

Оно открывает браузер и отображает заданный url адрес.
Думал прицепить все окно QMessageBox на форму проблема со стандартными кнопками (не смог их убрать).
Использовал QWebView но он открывает все в себе.
Как сохранить картинку из QWebView на жесткий диск?
Как решить мою проблему?

Автор: Kagami 15.12.2010, 16:33

Цитата(Dimix @ 15.12.2010, 15:20) *
Перечитал тему 2 раза. Так ничего и не понял. Вопрос похожий необходимо повесить баннерок чтобы при клике на него открывался браузер. Я думал все просто сделал так:
QLabel* labelBanner = new QLabel(tr("<a href=\"http://ya.ru/\">Яндекс</a>"));
labelBanner->show();

Оно показывает что ссылка задана но не переходит. Как решить мою проблему?

http://www.doc.crossplatform.ru/qt/4.7.x/qlabel.html#openExternalLinks-prop

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)