For an app I am working on I need a component for displaying HTML rich text. 
TextEdit does not provide an important feature I need present in QTextEdit and 
QTextBrowser: scrollToAnchor( const QString& ).

The app will have to work on iOS, so WebEngine is out of the question, and I 
would not want to have all the overhead of having a web browser in the app 
anyways.

Given the text itself is fairly simple (no images, just formatted text), 
QTextBrowser gives me what I need.

I have been looking into trying to embed a QTextBrowser into a QML application 
using the approach in this project:

https://www.alex-spataru.com/blog/using-qt-widgets-in-your-qmlqtquick-applications
 
<https://www.alex-spataru.com/blog/using-qt-widgets-in-your-qmlqtquick-applications>.
 (QmlPlainTextEdit)

A similar approach is used here:

https://github.com/mosolovsa/qmlplot <https://github.com/mosolovsa/qmlplot>


This involves:
* Creating a class deriving from QQuickPaintedItem
* Encapsulating an instance of QTextBrowser instantiated with a nullptr parent 
as a member in that class
* Rendering from the QTextBrowser into the QQuickPaintedItem derivative
* Hooking up the necessary events between the QQuickPaintedItem and the 
QTextBrowser instance

That all seems to be no problem. The problem I get results in a segmentation 
fault:

“””
QObject: Cannot create children for a parent that is in a different thread.
(Parent is QTextDocument(0x5617e2ebed80), parent's thread is 
QThread(0x5617e2958860), current thread is QSGRenderThread(0x5617e2d18400)
“”"

The crash occurs after passing the URL to open via QTextBrowser::setSource( 
const QUrl&, QTextDocument::ResourceType ) though not immediately.

Note: I am using Qt 6.3.0-rc on Kubuntu Linux 21.10.

The qmlplot application will compile and run on Qt 5.15.8 (with warnings) but 
not on 6.3.0-rc (lots of errors and warnings). However, it does not involve a 
widget containing an instance of QTextDocument. I have not tried the code 
directly in QmlPlainTextEdit, but I did notice the source sites are no longer 
available.

I am aware that, assuming this can be made to work, that performance may be CPU 
intensive especially with antialiasing, but I wanted to give it a try before 
looking into alternatives.

Thanks very much in advance!

Sincerely,

Jeffrey Brendecke
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to