Масштабирование rich - текста а-ля Word в Qt
Библиотека Qt 3.3.4
Написал классы для работы со страницами документа, браузер наследует QScrollView, класс страницы размещаемой в браузере - QTextBrowser.
На главной форме размещается QComboBox по типу как в Word 500%, 200%, 100, 50 и т. д. Страницы размеры изменяют (resize), на ScrollView перераспределяются, а вот как масштабировать содержимое (html) - не представляю. Методы zoomIn() и zoomOut() для масштабирования хотябы с шагом 10% не подходят - все происходит довольно коряво.
Если не найду решение придется подгонять величину масштаба под результат этих функций и написать ближайшее целое, но при таком решении о нормальном масштабировании придется забыть.
Да и еще какойто косяк у методов - после zoomIn() результат zoomOut() (и наоборот) может не всегда возвращать первоначальный вид страницы.
Прикреплю картинку - mainWindow, но это не проект, а сделано для создания моего браузера страниц.
Попробовал добавлять текст в QCanvas и рисовать текст QPainter-ом (drawText) - не поддерживают HTML. QCanvas-ом можно масштабировать хорошо, но текста в виде картинки для работы не достаточно.
Спасибо за разбанивание, лучше быть собой под первоначальным ником, надеюсь в будущем трений не возникнет.
Код ассистента ничего хитрого не использует:
void TabbedBrowser::zoomIn()
{
currentBrowser()->zoomIn();
}
Косяки я понял (но не как их устранить), под Windows функции zoomIn() и zoomOut() работают хорошо, но когда я свои классы и запускалку компилю под нашу МСВС (Линукс), эти функции кочеряжутся, например результат изменения масштаба в одну сторону не соответствует изменению масштаба на такое же количество шагов в другую сторону, и ещё, что хуже, при увеличении на некоторое колчество раз, функция уменьшения вообще отказывается работать!
Попробую перегруженные функции, с параметром, но сомневаюсь в улучшении результата.