我正在QTextEdit中做某事。我为QClipboard::changed()
信号写了一个插槽。在广告位中,如何判断剪贴板中的文本是否来自我的应用程序(而不是外部的其他应用程序)?
我的解决方案是比较剪贴板中的文本和选定的文本:
mimeData->text() == textCursor()->selectedText()
但是,我发现当我选择多行并复制时。
selectedText()
将\n
视为0
,而mimeData
将其视为\n
(即10
)。所以mimeData->text() != textCursor()->selectedText()
。顺便说一句,
QClipboard::ownsClipboard()
是什么意思?这是我要找的东西吗?有什么帮助吗?谢谢!
最佳答案
根据文档:
布尔QClipboard :: ownsClipboard()const
如果此剪贴板对象拥有剪贴板数据,则返回true;否则返回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";
}
从
selectedText()
的documentation抄录返回当前选择的文本(可以为空)。仅此
返回文本,没有格式文本格式信息。如果你
想要文档片段(即格式化的富文本格式)使用selection()
代替。
注意:如果从编辑器获得的选择跨越了一个换行符,则
文本将包含Unicode U + 2029段落分隔符
而不是换行符\ n字符。使用QString :: replace()替换
这些字符用换行符。
关于c++ - QClipboard和selectedText()在QTextEdit中不相等,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41406248/