首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QClipboard和selectedText()在QTextEdit中不相等

QClipboard和selectedText()在QTextEdit中不相等
EN

Stack Overflow用户
提问于 2016-12-31 07:05:15
回答 1查看 301关注 0票数 0

我正在QTextEdit里做一些事情。我为QClipboard::changed()信号写了一个插槽。在插槽中,如何判断剪贴板中的文本是否来自我的应用程序(而不是来自外部的其他应用程序)?

我的解决方案是比较剪贴板中的文本和选定的文本:

代码语言:javascript
复制
mimeData->text() == textCursor()->selectedText()

但是,当我选择多行并复制它时,我发现。selectedText()\n处理为0,而mimeData将其处理为\n (即10)。所以mimeData->text() != textCursor()->selectedText()

顺便问一下,QClipboard::ownsClipboard()是什么意思?这就是我要找的东西吗?

有什么帮助吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-31 07:58:51

根据文件:

bool QClipboard::ownsClipboard() const 如果此剪贴板对象拥有剪贴板数据,则返回true;否则返回false。

所以这就是你要找的东西。

代码语言:javascript
复制
clipboard = QApplication::clipboard();
    connect(clipboard, SIGNAL(changed(QClipboard::Mode)), this, SLOT(your_slot()));

插槽:

代码语言:javascript
复制
void {your class}::your_slot()
{
    if(clipboard->ownsClipboard())
        qDebug()<< "own";
    else
        qDebug()<< "not his own";
}

文档 of selectedText()转录

返回当前选择的文本(可能为空)。这只返回文本,没有丰富的文本格式信息。如果您想要一个文档片段(即格式化的富文本),请使用selection()代替。 注意:如果从编辑器获得的选择跨越断行,文本将包含Unicode U+2029段落分隔符字符,而不是换行符\n字符。使用QString::替换()将这些字符替换为换行符.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41406248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档