[Development] [Feature Suggestion] Improved Text layouting support in QtQuick
Roiner Winkler
syncu at bk.ru
Fri Jul 17 12:41:08 CEST 2020
Hello,
having used QtQuick professionally for serveral years now, I have some suggestions regarding the text handling in Qt Quick.
One major point of interest for me is rich text handling. A large number of modern (mostly HTML/Electron-based) applications nowadays feature smart text input fields which are able to automatically highlight or link certain parts of the text and show buttons, tags, emojis or similar controls inlined in the text. These kinds of controls get more and more important in UI development.
As of yet, QtQuick lacks such a feature. Anything going beyond very basic hyperlink/image support requires developers to resort to the RichText mode which however only allows you to use a subset of HTML rather than your own QtQuick Controls which has a bad performance impact and requires more development effort.
I would like propose a new layout control in QML for positioning an arbitrary composition of text and other QtQuick elements. It should support user selection and user editing (similar to contenteditable=true in HTML) and let the QML elements inside the text react to them being selected.
The syntax I have in mind could look like this:
TextLayout {
alignment: Qt.AlignLeft
editable: true
selectionAllowed: true
TextSpan {
text: "Lorem ipsum dolor sit amet"
}
Button {
label: "Click me"
TextLayout.alignment: TextLayout.Center
background: TextLayout.isSelected ? "blue" : "white"
}
TextSpan {
text: "Text after the button"
TextLayout.allowSelection: false
}
TextSpan {
lineBreakBefore: true
color: "red"
text: "more text"
}
}
This is inspired by the TextSpan and WidgetSpan controls in Flutter:
https://api.flutter.dev/flutter/widgets/WidgetSpan-class.html
https://api.flutter.dev/flutter/painting/TextSpan-class.html
The second proposal I would like to make affects custom QtQuick controls developed in C++. As of now, it is practically impossible to implement custom scene graph controls (not QQuickPaintedItems) containing text without using the private QQuickTextNode. This node should be made public, or different APIs for painting text via the scene graph should be exposed.
Are there already plans to include such features for Qt6 in the near future?
Best regards,
Steven
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20200717/7edead5a/attachment.html>
More information about the Development
mailing list