aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2023-02-20 13:26:09 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2023-02-20 16:02:04 +0100
commit7e6236ec25f8739648e36cf82054c6b2cd4f714d (patch)
treefd2c32b03a01386960acda090f8db7483251e359 /examples
parentfe06197638fce9985285e42114cc1e95a0adb17e (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 <tismer@stackless.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/widgetbinding/dialog.py3
-rw-r--r--examples/widgetbinding/wigglywidget.cpp12
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]