Linux 和剪贴板

Posted

技术标签:

【中文标题】Linux 和剪贴板【英文标题】:Linux and clipboard 【发布时间】:2009-06-27 11:04:17 【问题描述】:

在Linux中,文本选择后复制到缓冲区,所以我们可以通过单击鼠标中键来粘贴它。我认为这件事有一个特殊的缓冲区。我想用它。如何获取所选文本的数据?

操作系统:Linux 编程语言:c++ 自有库:Qt

谢谢。

【问题讨论】:

【参考方案1】:

只是比 Paul Dixon 更准确的答案,可以满足您的需求:

QClipboard* clipboard = QApplication::clipboard();
QString selectedText = clipboard->text(QClipboard::Selection);

【讨论】:

【参考方案2】:

您需要区分选择和剪贴板。 QClipboard 文档在 Notes for X11 Users 部分中有此内容:

X11 Window System 有这个概念 一个单独的选择和剪贴板。 选择文本时,它是 立即可用作为全球 鼠标选择。全球鼠标 选择可以稍后被复制到 剪贴板。按照惯例,中间 鼠标按钮用于粘贴 全局鼠标选择。

使用QClipboard::Mode,您可以选择要访问的类型(剪贴板或选择)。重要的是您需要了解选择和剪贴板之间的区别。

【讨论】:

【参考方案3】:

如果您使用的是 Qt,您是否阅读过 QClipboard 上的精美手册页?

QClipboard *clipboard = QApplication::clipboard();
QString clipboardText = clipboard->text();

【讨论】:

它从普通剪贴板获取数据。这不是我需要的。 您可能需要扩展您的问题以表明您要解决的问题【参考方案4】:

实际处理选择和粘贴系统的系统是X11 Windows。例如,当您在最喜欢的编辑器中绘制一些文本时,应用程序会发送 X11 请求,该请求会告诉 X11 服务器您有一个活动选择。如果您随后在某处单击鼠标中键,X11 服务器会查询告诉服务器有关实际内容选择的应用程序。然后将内容转发给接收应用程序。

像 Qt 这样的库为这种机制提供了包装器,但底层机制是 X11。

【讨论】:

以上是关于Linux 和剪贴板的主要内容,如果未能解决你的问题,请参考以下文章

linux剪贴板

C ++从Linux上的剪贴板获取字符串

如何在vim中将选定的行复制到剪贴板

如何在远程 Linux ssh 会话上运行的 vim 中拉到本地 OSX 剪贴板?

当我通过 Git Bash 中的 ssh 在远程 Linux 机器上运行命令时,如何将文件的内容直接复制到我的 Windows 剪贴板中?

Python如何访问X11剪贴板?