Добрый день!
ОС: Red Hat сервер 5.5 32 битный.
Qt 4.7.2.
Собирал так: ./configure -static -nomake demos -nomake examples -webkit -gtkstyle -glib -no-sql-sqlite -no-sql-sqlite2 -prefix /usr/local/Trolltech/Qt-4.7.2_Static
Суть проблемы: простая форма с WebView блюет в консоль Gtk'шными эррорами при попытке открыть страничку с флешем. Точнее окно флеша появляется, начинаются критикалы и оно уничтожается, выглядит это примерно вот так:
(<unknown>:17532): Gdk-CRITICAL **: gdk_window_get_origin: assertion `GDK_IS_WINDOW (window)' failed
(<unknown>:17532): Gdk-CRITICAL **: gdk_window_get_origin: assertion `GDK_IS_WINDOW (window)' failed
(<unknown>:17532): Gdk-WARNING **: GdkWindow 0x250016f unexpectedly destroyed
Плагины в вебките активированы:
QWebSettings::globalSettings()->setAttribute(QWebSettings::JavascriptEnabled, true);
QWebSettings::globalSettings()->setAttribute(QWebSettings::PluginsEnabled, true);
Версия плагина 10.0.45.2.
И тестовые странички, вроде http://www.adobe.com/software/flash/about/ сообщают что плагин установлен.
Пробовал все версии с 9 по 10.2.153. С плагинами версий 9 и 10.0.ХХ происходит вышеописанная картина. с 10.1 и выше сайты с флешем мне вообще говорят, что плагин не установлен. Хотя в strace видно, что он libflashplayer находит.
В убунте эта же программа нормально проигрывает флеш.
Помогите кто-нибудь :o много чего пробовал, ничего не помогло.
ну у меня только под версию 10.0.45.2 и работает
.h
#ifndef BROWSER_H
#define BROWSER_H
#include <QWidget>
#include <QtGui/QIcon>
#include <QtCore/QUrl>
#include "WebViewObj.h"
class ExtWebView;
class browser : public QWidget
{
Q_OBJECT
public:
browser(QWidget *parent = 0);
void loadFile(const QString& strFile);
//protected:
// void mousePressEvent(QMouseEvent* event);
void contextMenuEvent(QContextMenuEvent *event){
return;
}
private:
ExtWebView *view;
};
#endif
.cpp
#include <QtGui>
#include <QtCore/QSettings>
#include <QtWebKit>
#include <QPixmap>
#include "browser.h"
browser::browser(QWidget *parent): QWidget(parent)
{
view = new ExtWebView(this);
QHBoxLayout *ley = new QHBoxLayout();
ley->addWidget(view);
ley->setMargin(0);
ley->setSpacing(0);
setLayout(ley);
// setFixedSize(292,540);
}
//void browser::mousePressEvent(QMouseEvent* event)
//{
// if(event->button() == Qt::RightButton)
// return;
//}
void browser::loadFile(const QString& strFile)
{
view->load(QUrl(strUrl));
QSettings settings;
settings.beginGroup(QLatin1String("websettings"));
QWebSettings *defaultSettings = QWebSettings::globalSettings();
QString standardFontFamily = defaultSettings->fontFamily(QWebSettings::StandardFont);
int standardFontSize = defaultSettings->fontSize(QWebSettings::DefaultFontSize);
QFont standardFont = QFont(standardFontFamily, standardFontSize);
standardFont = qVariantValue<QFont>(settings.value(QLatin1String("standardFont"), standardFont));
defaultSettings->setFontFamily(QWebSettings::StandardFont, standardFont.family());
defaultSettings->setFontSize(QWebSettings::DefaultFontSize, standardFont.pointSize());
QString fixedFontFamily = defaultSettings->fontFamily(QWebSettings::FixedFont);
int fixedFontSize = defaultSettings->fontSize(QWebSettings::DefaultFixedFontSize);
QFont fixedFont = QFont(fixedFontFamily, fixedFontSize);
fixedFont = qVariantValue<QFont>(settings.value(QLatin1String("fixedFont"), fixedFont));
defaultSettings->setFontFamily(QWebSettings::FixedFont, fixedFont.family());
defaultSettings->setFontSize(QWebSettings::DefaultFixedFontSize, fixedFont.pointSize());
defaultSettings->setAttribute(QWebSettings::JavascriptEnabled, settings.value(QLatin1String("enableJavascript"), true).toBool());
defaultSettings->setAttribute(QWebSettings::PluginsEnabled, settings.value(QLatin1String("enablePlugins"), true).toBool());
QUrl url = settings.value(QLatin1String("userStyleSheet")).toUrl();
defaultSettings->setUserStyleSheetUrl(url);
settings.endGroup();
}
давай почту я тебе скину... плагин
Флеш начал проигрываться в WebView при создании компонента без родителя (первый раз я просто кидал его на форму) ;) и только на версии плагина 10.0.36.2