2013-03-09 5 views
0

У меня проблема с открытым локальным html-файлом в виджетах QWebView. Таким образом, я делаю это так:Qt - загрузка htm-файла из ресурсов

QWebView *myWebView = new QWebView;  
myWebView->load(QUrl("qrc:/index.htm")); 

Конечно, я добавил index.htm ресурсов. Но в QWebView есть белый экран. Я попытался открыть локальный файл с помощью Firefox, все в порядке.

Что мне делать, чтобы исправить это?

PS: htm-страница использует js и css-файлы, но я также добавил их в ресурсы. PSS: Кроме того, я пытался сделать это таким образом:

QFile res(":/index.htm"); 
res.open(QIODevice::ReadOnly|QIODevice::Text); 
myWebView->setHtml(res.readAll()); 

, но это не помогает.

ответ

1

Вы пробовали просто загрузив файл в QByteArray в проверить правильность загрузки?

Edit:

Что-то вроде (не проверялось, но вы получите идею):

QFile file(":/index.htm"); 
QByteArray dump = file.readAll(); 
qDebug() << "contents: " << dump; 
qDebug() << "error status: " << file.error(); 

Метод error() возвращает QFile::FileError ENUM.

+0

Можете ли вы объяснить более подробную информацию о QByteArray? Да, я уверен, есть только префикс «/» –

+0

, он печатает только '' '' Что это значит? –

+0

Это означает, что QFile также не может получить доступ к файлу в ресурсах, иначе файл пуст. Таким образом, проблема не имеет ничего общего с QWebView, это проблема с ресурсами. – hyde

1

Я бы сначала попробовать это:

connect(myWebView, SIGNAL(loadFinished(bool)), this, SLOT(finishedLoad(bool))); 
.... 
void finishedLoad(bool ok){ 
    qDebug() << ok; 
} 

Тогда вы будете знать, если веб-вид сталкивается ошибка при загрузке. Ошибка может быть вызвана неправильно отформатированные HTML и т.д.

Другой метод должен был бы загрузить содержимое ресурса в строку, а затем:

myWebView->setHtml(stringFromResource); 
+0

hmm, он возвращает «false». ОК, я пытался использовать sethtml, теперь он возвращает «true», но снова появляется белый экран. –

1

Ваша проблема заключается в использовании файла ресурсов. Вот некоторые советы:

  • Действительно ли ваш файл находится на диске?
  • Вы сохранили файл ресурсов перед сборкой? Попробуйте сохранить все и сделать чистую сборку.
  • Прежде всего проверьте (и при необходимости, показать) свой .qrc -файл (это текстовый файл в виде XML), правильно ли это? Добавили ли вы префикс (<qresource prefix="/">) и т. Д.
  • Попробуйте использовать псевдонимы вроде <file alias="cut-img.png">images/cut.png</file>, и тогда ваш файл будет доступен как :/cut-img.png из приложения.

Конечно, не забудьте проверить документацию - http://qt-project.org/doc/qt-4.8/resources.html

Удачи!

+0

спасибо за ответ –

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

  • Нет связанных вопросов^_^