LINUX.ORG.RU

Qt4: простой html и web viewer


0

0

Здравствуйте!
Вот как-то пытался компилировать qtiplot-0.9.8 с qt-4.7. Этого мне не удалось, т.к. там используется один класс из qt-4.6 QAssistantClient, который теперь имеет статус «deprecated» и в qt-4.7 не входит.
Этот класс использовался для просмотра документации(то-ли в html, то-ли в *.adp формате Assistant'a).
Автору Qtiplot'a на форуме проекта на это жаловались, но Ion Vasilief посетовал на то чтобы использовали Qt-4.6 или оплатили контракт поддержки :-)

Это навело меня на мысль написать свой небольшой и легко встраиваемый виджет для просмотра html файлов или web-страниц, что и было сделано.

Я успешно заменил этим виджетом класс QAssistantClient в исходых файлах Qtiplot-0.9.8 qtiplot/core/ApplicationWindow.cpp и ApplicationWindow.h и скомпилировал[если надо, выложу эти 2 изменённые файла].

ссылка на исходники:
http://tfsoft.org.ua/~blinkenlichten/helpViewer-widget-v01.tar.bz2

скриншот:
http://tfsoft.org.ua/~blinkenlichten/helpViewer.jpeg

(где helpViewer.cpp helpViewer.h -файлы класса виджета, main.cpp - простейшее приложение с виджетом.)
P.S. Думаю будет полезно и тема рядом есть, где об этом спрашивали. Правда, я недавно начал изучать Qt4, но старался написать по-людски.

Спасибо за внимание!

Вот, пошло-поехало.

/me помнит волну подобных браузеров на движе MSIE, сбацанных за полчаса на коленке в дельфи[5-7]

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

>/me помнит волну подобных браузеров на движе MSIE, сбацанных за полчаса на коленке в дельфи

Так родились мультитабовость, сохранение сессий и другие современные фичи, без которых трудно представить браузер :)

KRoN73 ★★★★★
()
Ответ на: комментарий от yoghurt

Ну, для меня здесь цель была не браузер, а возможность открыть документацию в формате html (хотя как браузер годится, если другие установленные браузеры долго запускаются, а надо проверить один сайт).

В интернете такого простого чего-то не нашел.
А те, что в примерах Qt4 не устраивали(там всё сделано на основе QMainWindow, а не QWidget), вот и написал такое для дальнейшего использования в Qt4-коде(как в случае с Qtiplot'ом, где используется выпиленный из Qt-4.7 класс).

Иконки не стал делать, чтобы это был простой виджет, заголовочный файл которого включил — и работает, без излишеств.

Для всего остального есть arora, kchmviewer(для chm архивов) и многое другое ...

blinkenlichten
() автор топика
Ответ на: комментарий от nu11

Оно построено на основе класса QMainWindow(с использованием QWebView), работает как отдельная программа, его не включишь в приложение, как виджет.

Извините, если не так что-то сказал.

blinkenlichten
() автор топика
Ответ на: комментарий от blinkenlichten
if( !addr.contains(tr("http://"), Qt::CaseSensitive )){
    /* normal convert "file://home/user/path-to-file.txt"
      to "//home/user/path-to-file.txt" */
    if( addr.contains(tr("file:"), Qt::CaseSensitive )){
      addr.remove(0,4);
      this->address_lineEdit->setText(addr);
    } else
      /* if the url looks like: "file://../../../README.html"
         or "/../../../README.html"
         we will make it of such kind: "../../../README.html"
      */
      if(addr.contains(tr("../")) ) {
	if( (addr.indexOf(tr("..")))-1 >= 0)
	  addr.remove(0, addr.indexOf(tr("../"))-1 );
	this->address_lineEdit->setText(addr);
      }
    //if definietely it's not a local file, then go WEB:
    QFile *localfile = new QFile(addr);
    if(!localfile->exists()){
      addr.prepend("http://");
      this->address_lineEdit->setText(addr);
      viewWidget->setUrl( addr );
    }else {
      viewWidget->setUrl( QUrl::fromLocalFile(addr) );
    }
  } else 
  //...

Есть такие замечательные классы как QUrl и QFileInfo, это про разбор схемы и про махинации с '..'.

rival ★★
()
Ответ на: комментарий от alex_custov

2 alex_custov: здесь забыл освободить. Спасибо.

2 Yareg, rival: да, обошлось и без этого и без QString(char*), даже если в документации там QString в аргументе просят и не перегружено на использование char*. (мне иногда кажется, что Qt4 за спиной у программиста делает на много больше чем надо :D)

Спасибо что не поинтересовались, заглянув в исходники.

blinkenlichten
() автор топика
Ответ на: комментарий от blinkenlichten

Oooops, бывает же.(backspace - зло :))

Имел ввиду «Спасибо, что поинтересовались.»

blinkenlichten
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.