QClipboard和selectedText()在QTextEdit中不相等
问题描述:
我正在做一些QTextEdit。我为QClipboard::changed()
信号写入一个插槽。在插槽中,如何判断剪贴板中的文本是否来自我的应用程序(而不是来自其他应用程序)?QClipboard和selectedText()在QTextEdit中不相等
我的解决办法是在剪贴板中的文本和选定的文本比较:
mimeData->text() == textCursor()->selectedText()
然而,我发现,当我选择多行并复制它。 selectedText()
将\n
作为0
处理,而mimeData
将其作为\n
(即10
)处理。所以mimeData->text() != textCursor()->selectedText()
。
顺便说一句,QClipboard::ownsClipboard()
是什么意思?这是我在找什么?
任何帮助?谢谢!
答
根据文档:
布尔QClipboard :: ownsClipboard()const的
返回如果此剪贴板对象拥有的剪贴板数据真实; 否则返回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";
}
从documentation的selectedText()
抄写返回当前选择的文本(其可以是空的)。这只有 返回文本,没有丰富的文本格式信息。如果您要 需要文档片段(即格式化富文本),请改用选择() 。
注:如果从编辑获得的选择跨越线断裂, 文本将包含一个Unicode U + 2029款分隔符 而不是换行\ n字符。使用QString :: replace()用换行符替换 这些字符。
谢谢!你知道'mimeData() - > text()'和'selectedText()'之间的细微区别吗? – tamlok
@tamlok如果我的答案有用,请将其标记为正确。 – eyllanesc
@tamlok更新我的解决方案 – eyllanesc