c++ - 如何在 iOS 上的 QT/QML 中使用剪贴板

标签 c++ ios qt qml qtquick2

QML 复制文本到系统剪贴板的代码

Item {

TextEdit {
    id: cliphelper
    visible: false
}

Button{
    onClicked: {
        cliphelper.text = "testclip"
        cliphelper.selectAll()
        cliphelper.copy()
    }
}

当我运行它然后传递到一封电子邮件时,我得到了这个。

氐漯甑渌攴

此剪辑/粘贴代码在 Windows 和 OSX 中运行良好。在 iOS 上很奇怪

问题: 这里是否发生了一些编码转换? 从 "testclip"到 "挽救精湛最攀"?

注:QT 5.7

另外,当我直接粘贴回我的应用程序时,效果很好,但是当我再次从另一个应用程序中剪辑这个保存然后粘贴时,它不会转换它。

就好像在 ios 剪贴板和我的应用程序之间正在进行某种 ssl?

谢谢

最佳答案

我在 iOS 上使用 Qt 5.7.1 的 QtQuick 应用程序中遇到了类似的问题。

Qt 5.7.1 中的 QClipboard 实现似乎有一个错误。 我可以使用以下代码直接将文本设置到 iOS 粘贴板来进行复制/粘贴。

#include "ioswrapper.h"
#import <UIKit/UIPasteboard.h>

ioswrapper::ioswrapper(QObject *parent):QObject(parent)
{

}
void ioswrapper::setPasteBoardString(const QString &paste)
{
        UIPasteboard *pb = [UIPasteboard generalPasteboard];
        if (pb) {
                    const char *str = paste.toUtf8().data();
                    NSString *text = [NSString stringWithCString:(const char *)str
                        encoding:(NSStringEncoding)NSUTF8StringEncoding];
                    if (text)
                        pb.string = text;
        }
}

供引用: https://bugreports.qt.io/browse/QTBUG-56229

关于c++ - 如何在 iOS 上的 QT/QML 中使用剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46127567/

相关文章:

c++ - std::ofstream 即使在二进制模式下也写入\r

c++ - POSIX (C++) 参数类型不匹配

ios - 检测 AVQueuePlayer 中的视频项何时更改

c++ - 从基方法获取派生类

qt - QPainter.drawText 斜体写在矩形之外

c++ - 找不到 Chrome_OmniboxView

c++ - 在浏览器中运行 c++

objective-c - 释放Objective-c中的返回对象错误

ios - locationd 守护进程不断获取 jetsammed ios 8.1

c++ - 按钮连接Qt失败