在Linux中选择文本后,它会复制到缓冲区,因此我们可以通过单击鼠标中键来粘贴它。我认为这个东西有一个特殊的缓冲区。我想用它。我怎样才能获得所选文本的数据?
感谢。
答案 0 :(得分:6)
比保罗迪克森更能准确回答你的需求:
QClipboard* clipboard = QApplication::clipboard();
QString selectedText = clipboard->text(QClipboard::Selection);
答案 1 :(得分:3)
您需要区分选择和剪贴板。 QClipboard
文档在Notes for X11 Users部分中有此内容:
X11 Window System有这个概念 单独的选择和剪贴板。 选择文本时,它是 立即可用作全球 小鼠选择。全球鼠标 以后可以将选择复制到 剪贴板。按惯例,中间 鼠标按钮用于粘贴 全球鼠标选择。
使用QClipboard::Mode
,您可以选择要访问的类型(剪贴板或选择)。重要的是你需要了解选择和剪贴板之间的区别。
答案 2 :(得分:1)
如果您使用的是Qt,请阅读QClipboard上的精美手册页吗?
QClipboard *clipboard = QApplication::clipboard();
QString clipboardText = clipboard->text();
答案 3 :(得分:1)
实际处理选择和粘贴系统的系统是X11 Windows。当您在自己喜欢的编辑器中绘制一些文本时,应用程序会发送X11请求,告知X11服务器您有一个活动选择。如果然后在某处单击鼠标中键,X11服务器将询问应用程序,该应用程序告知服务器有关实际内容的选择。然后将内容转发到接收应用程序。
像Qt这样的库为这种机制提供了包装器,但底层机制是X11。