在Linux中,选定文本后会将其复制到缓冲区,因此我们可以通过单击鼠标的中间按钮来粘贴它。我认为这个东西有一个特殊的缓冲区。我想使用它。如何获取所选文本的数据?
- 操作系统:Linux
- 编程语言:C++
- 自己的库:Qt
谢谢。
这里提供比Paul Dixon更准确的答案,满足您的需求:
QClipboard* clipboard = QApplication::clipboard();
QString selectedText = clipboard->text(QClipboard::Selection);
QClipboard
文档有以下内容:
使用X11 Window系统有一个单独的选择和剪贴板概念。当选择文本时,它会立即作为全局鼠标选择可用。全局鼠标选择稍后可以复制到剪贴板。按照惯例,中间鼠标按钮用于粘贴全局鼠标选择。
QClipboard::Mode
,您可以选择要访问的类型(剪贴板或选择)。重要的是,您需要了解选择和剪贴板之间的区别。QClipboard *clipboard = QApplication::clipboard();
QString clipboardText = clipboard->text();
实际处理选择和粘贴系统的系统是X11 Windows。例如,当您在喜爱的编辑器中绘制一些文本时,应用程序会发送一个X11请求,告诉X11服务器您有一个活动选择。然后,如果您在某个地方单击中间鼠标按钮,X11服务器会查询告诉服务器有关选择的应用程序以获取实际内容。然后将内容转发到接收应用程序。
像Qt这样的库为此机制提供了包装器,但底层机制是X11。