我正在QTextEdit里做一些事情。我为QClipboard::changed()信号写了一个插槽。在插槽中,如何判断剪贴板中的文本是否来自我的应用程序(而不是来自外部的其他应用程序)?
我的解决方案是比较剪贴板中的文本和选定的文本:
mimeData->text() == textCursor()->selectedText()但是,当我选择多行并复制它时,我发现。selectedText()将\n处理为0,而mimeData将其处理为\n (即10)。所以mimeData->text() != textCursor()->selectedText()。
顺便问一下,QClipboard::ownsClipboard()是什么意思?这就是我要找的东西吗?
有什么帮助吗?谢谢!
发布于 2016-12-31 07:58:51
根据文件:
bool QClipboard::ownsClipboard() const 如果此剪贴板对象拥有剪贴板数据,则返回true;否则返回false。
所以这就是你要找的东西。
clipboard = QApplication::clipboard();
connect(clipboard, SIGNAL(changed(QClipboard::Mode)), this, SLOT(your_slot()));插槽:
void {your class}::your_slot()
{
if(clipboard->ownsClipboard())
qDebug()<< "own";
else
qDebug()<< "not his own";
}从文档 of selectedText()转录
返回当前选择的文本(可能为空)。这只返回文本,没有丰富的文本格式信息。如果您想要一个文档片段(即格式化的富文本),请使用selection()代替。 注意:如果从编辑器获得的选择跨越断行,文本将包含Unicode U+2029段落分隔符字符,而不是换行符\n字符。使用QString::替换()将这些字符替换为换行符.
https://stackoverflow.com/questions/41406248
复制相似问题