在 Linux 中,选择文本后将其复制到缓冲区,因此我们可以通过单击鼠标中键将其粘贴。我认为这件事有一个特殊的缓冲区。我想用它。如何获取所选文本的数据?
- 操作系统:Linux
- 编程语言:c++
- 自己的库:Qt
谢谢。
只是比 Paul Dixon 更准确的答案,可以满足您的需求:
QClipboard* clipboard = QApplication::clipboard();
QString selectedText = clipboard->text(QClipboard::Selection);
您需要区分选择和剪贴板。该QClipboard
文档在“ X11 用户注释”部分中有此内容:
X11 窗口系统具有单独的选择和剪贴板的概念。选择文本后,它立即可用作全局鼠标选择。全局鼠标选择稍后可能会复制到剪贴板。按照惯例,鼠标中键用于粘贴全局鼠标选择。
QClipboard::Mode
您可以选择要访问的类型(剪贴板或选择)。重要的部分是您需要了解选择和剪贴板之间的区别。
如果您使用的是 Qt,您是否阅读过QClipboard上的精美手册页?
QClipboard *clipboard = QApplication::clipboard();
QString clipboardText = clipboard->text();
实际处理选择和粘贴系统的系统是 X11 Windows。例如,当您在您喜欢的编辑器中绘制一些文本时,应用程序会发送 X11 请求,该请求会告诉 X11 服务器您有一个活动选择。如果您随后在某处单击鼠标中键,X11 服务器会查询告诉服务器有关实际内容选择的应用程序。然后将内容转发给接收应用程序。
Qt 之类的库为这种机制提供了包装器,但底层机制是 X11。