我在 MacOS 上使用 Qt 6.5(尽管 Qt 5.15 也有同样的问题)。我使用
QClipboard::setMimeData
粘贴到剪贴板。然后我可以使用 QClipboard::mimeData
检索数据。但是,如果我尝试使用 Ctrl+V(在 Kitty 中)或 Cmd+V(在任何其他应用程序中)进行粘贴,则会出现“旋转沙滩球”,直到我杀死./a.out
。
如果我只按“编辑”菜单,也会发生这种情况。
如果
a.out
正在运行,并且我复制其他内容,粘贴将按预期工作。
如果重要的话,我不会将 char 数据转换为 QString 和 QByteArray,而是直接将它们作为 char 数组传递。尽管如果我显式转换,这确实会发生:
mime->setData(QString::fromUtf8(sel.formats[i].name,-1),QByteArray::fromRawData(sel.formats[i].data,strlen(sel.formats[i].data)));
啊,找到问题了:我用的是
sleep
而不是 app.exec()
。