platform_qt example: implement clipboard

This commit is contained in:
Olivier Goffart 2023-08-28 18:01:50 +02:00 committed by Olivier Goffart
parent d160eb7a31
commit 9c3cba0c50

View file

@ -335,6 +335,39 @@ struct MyPlatform : public slint::platform::Platform
{
return std::make_unique<MyWindow>(parentWindow.get());
}
void set_clipboard_text(const slint::SharedString &str,
slint::platform::Platform::Clipboard clipboard) override
{
switch (clipboard) {
case slint::platform::Platform::Clipboard::DefaultClipboard:
qApp->clipboard()->setText(QString::fromUtf8(str.data()), QClipboard::Clipboard);
break;
case slint::platform::Platform::Clipboard::SelectionClipboard:
qApp->clipboard()->setText(QString::fromUtf8(str.data()), QClipboard::Selection);
break;
}
}
std::optional<slint::SharedString> clipboard_text(Clipboard clipboard) override
{
QString text;
switch (clipboard) {
case slint::platform::Platform::Clipboard::DefaultClipboard:
text = qApp->clipboard()->text(QClipboard::Clipboard);
break;
case slint::platform::Platform::Clipboard::SelectionClipboard:
text = qApp->clipboard()->text(QClipboard::Selection);
break;
default:
return {};
}
if (text.isNull()) {
return {};
} else {
return slint::SharedString(text.toUtf8().data());
}
}
};
int main(int argc, char **argv)