Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: dd от Январь 17, 2011, 14:28



Название: Виджет внутри QTextBrowser
Отправлено: dd от Январь 17, 2011, 14:28
Задача вставить виджет в QTextBrowser, например кнопку.

Когда писал на wxWidgets, там тоже есть класс отображения порстого html.
Там можно задать пользовательский тег, привязать к нему любой виджет из программы
и отображать в странице просто вставив тег и размеры.

Есть ли что-нибудь подобное в QT? Сам пока не нашел.

Зачем мне это нужно? Хочу, чтобы в html странице кнопка нажималась.
Просто ссылка картинкой не прокатывает, ибо принажатии не изменяет своего вида.
Подключать WebKit не буду, слишком борльшой. Приложение для моб. устройств.

Спасибо за помощь.


Название: Re: Виджет внутри QTextBrowser
Отправлено: GreatSnake от Январь 17, 2011, 14:47
Цитировать
Есть ли что-нибудь подобное в QT? Сам пока не нашел.
Нет и скорее всего и не будет, т.к. есть в webKit-e.


Название: Re: Виджет внутри QTextBrowser
Отправлено: dd от Январь 17, 2011, 15:02
У вебкита и QTextBrowser - а разные задачи вообще.
Мой случай - наглядный пример, где этот функционал потребовался.
Если Вы не прочитали сообщение до конца, повторюсь: ради такой мелочи подключать вебкит не буду, ибо ограничен в ресурсах на КПК.


Название: Re: Виджет внутри QTextBrowser
Отправлено: GreatSnake от Январь 17, 2011, 15:07
Цитировать
Если Вы не прочитали сообщение до конца, повторюсь: ради такой мелочи подключать вебкит не буду, ибо ограничен в ресурсах на КПК.
Я всё прочитал и всё понял. Но реальность такова :(


Название: Re: Виджет внутри QTextBrowser
Отправлено: twp от Январь 17, 2011, 16:55
в Qt есть пример (Text Object Example) как вставлять кастом типы в QTextEdit, может поможет


Название: Re: Виджет внутри QTextBrowser
Отправлено: dd от Январь 17, 2011, 17:17
Я сейчас как раз ковыряю Text Object Example.
Вроде получается, отпишу как что.

-------------------------------

Короче разобрался.
Сделал c использованием QTextObjectInterface, QTextCharFormat итд. см Text Object Example в документации.
Создается новый тип символа, он добавляется в текст, попутно получив значения размеров.
При этом создается нужный виджет.
При перерисовке "символ" получает размеры и положение, которые шлет их сигналом куда надо.
Там, куда сигнал приходит, меняется размер и положение виджета поверх окна QTextBrowser::viewport()
короче как-то так. Получилось достаточно геморно, но другого выхода не вижу.

В итоге есть класс, наследованный от QTextBowser,у которого есть метод:
QTextBowser::AddDdWidget(QWidget*, QSize);

Этот метод добавляет виджет примерно так:

pBrowser->append("some text");
pBrowser->AddDdWidget(new QPushButton("Test"), QSize(100, 40));
pBrowser->append("some text");