Linux和剪贴板

3

在Linux中,选定文本后会将其复制到缓冲区,因此我们可以通过单击鼠标的中间按钮来粘贴它。我认为这个东西有一个特殊的缓冲区。我想使用它。如何获取所选文本的数据?

  • 操作系统:Linux
  • 编程语言:C++
  • 自己的库:Qt

谢谢。

4个回答

7

这里提供比Paul Dixon更准确的答案,满足您的需求:

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

3
您需要区分选择和剪贴板。在X11用户注意事项部分,QClipboard文档有以下内容:

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

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

1
如果你正在使用Qt,你是否阅读了QClipboard的详细手册页面?
QClipboard *clipboard = QApplication::clipboard();
QString clipboardText = clipboard->text();

它从普通剪贴板获取数据。这不是我需要的。 - Max Frai
你可能需要详细说明你要解决的问题,以便更好地得到帮助。 - Paul Dixon

1

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接