在粘贴到TextFIeld中之前,如何修改剪贴板中的字符串?

时间:2019-04-10 17:38:53

标签: qt qml clipboard

TextField类型(我正在使用QML,但没有关系)提供了一种paste()方法。但是,我希望能够在粘贴发生之前从剪贴板数据中删除所有空白。

Qt似乎没有提供任何钩子来以简单的方式执行此操作。有人知道如何实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

您可以公开一个C ++函数,该函数修改剪贴板数据并将其返回给QML:

class ClipboardModifier : public QObject
{
    // ...

    Q_INVOKABLE QString modifiedClipboardText() const
    {
        QClipboard *clipboard = QGuiApplication::clipboard();
        QString clipboardText = clipboard->text();
        // modify the text...
        return clipboardText;
    }
}

或者如答案here所示,简单地包装QClipboard,然后使用JavaScript在QML中进行修改,然后直接在文本字段中设置文本。