Если кому-то интересно, я реализовал это, используя специальный класс PageRasterizer.
Класс создает QWebPage в конструкторе и устанавливает флаг загрузки bool в false.Вызов connect()
соединяет сигнал loadFinished
со слотом участника, который просто устанавливает флаг загрузки в значение true.
Специальная функция RenderPage()
, которая возвращает изображение, выполняет всю работу: она принимает HTMLСтрока и звонки setHtml()
.После этого следует цикл while
, ожидающий флаг;в то время как флаг ложен, вызывается qApp->processEvents()
, поэтому сигналы испускаются, и в конечном итоге вызывается слот установки флага.Когда это так, цикл прерывается, и теперь вы можете визуализировать страницу в QImage (не забудьте установить флаг обратно в false перед возвратом).
Если вы заинтересованы в процессе рендеринга, посмотритев этот пример Qt (функция Thumbnailer::render()
).
Для бонусных очков вы можете сделать этот класс функтором.