diff options
author | Friedemann Kleint <[email protected]> | 2023-02-20 13:26:09 +0100 |
---|---|---|
committer | Friedemann Kleint <[email protected]> | 2023-02-20 16:02:04 +0100 |
commit | 7e6236ec25f8739648e36cf82054c6b2cd4f714d (patch) | |
tree | fd2c32b03a01386960acda090f8db7483251e359 | |
parent | fe06197638fce9985285e42114cc1e95a0adb17e (diff) |
Adapt the widgetbinding example
Port qtbase/4a5abfcea4ec2e494efd117d278a929f020816c0, fixing
the C++ code to handle UCS4 Emojis correctly.
Task-number: PYSIDE-2206
Change-Id: Ia5cdf7e6579b1400dc16ca47ec2adcd6cfe66877
Reviewed-by: Christian Tismer <[email protected]>
-rw-r--r-- | examples/widgetbinding/dialog.py | 3 | ||||
-rw-r--r-- | examples/widgetbinding/wigglywidget.cpp | 12 |
2 files changed, 9 insertions, 6 deletions
diff --git a/examples/widgetbinding/dialog.py b/examples/widgetbinding/dialog.py index 20dbd476c..1bd127804 100644 --- a/examples/widgetbinding/dialog.py +++ b/examples/widgetbinding/dialog.py @@ -21,12 +21,13 @@ class Dialog(QDialog): layout.addWidget(wiggly_widget_py) layout.addWidget(wiggly_widget_cpp) layout.addWidget(lineEdit) + lineEdit.setClearButtonEnabled(True) wiggly_widget_py.running = True wiggly_widget_cpp.setRunning(True) lineEdit.textChanged.connect(wiggly_widget_py.setText) lineEdit.textChanged.connect(wiggly_widget_cpp.setText) - lineEdit.setText("Hello world!") + lineEdit.setText("🖖 Hello world!") self.setWindowTitle("Wiggly") self.resize(360, 145) diff --git a/examples/widgetbinding/wigglywidget.cpp b/examples/widgetbinding/wigglywidget.cpp index 79fc79ee4..6fdc65f39 100644 --- a/examples/widgetbinding/wigglywidget.cpp +++ b/examples/widgetbinding/wigglywidget.cpp @@ -39,14 +39,16 @@ void WigglyWidget::paintEvent(QPaintEvent * /* event */) //! [3] QPainter painter(this); //! [3] //! [4] - for (int i = 0; i < m_text.size(); ++i) { - int index = (m_step + i) % 16; + int offset = 0; + const auto codePoints = m_text.toUcs4(); + for (char32_t codePoint : codePoints) { + const int index = (m_step + offset++) % 16; color.setHsv((15 - index) * 16, 255, 191); painter.setPen(color); - const QChar c = m_text.at(i); + QString symbol = QString::fromUcs4(&codePoint, 1); const int dy = (sineTable[index] * metrics.height()) / 400; - painter.drawText(x, y - dy, c); - x += metrics.horizontalAdvance(c); + painter.drawText(x, y - dy, symbol); + x += metrics.horizontalAdvance(symbol); } } //! [4] |