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