2009-06-27 120 views
2

在Linux中选择文本后,它会复制到缓冲区,因此我们可以通过单击鼠标中键来粘贴它。我认为这个东西有一个特殊的缓冲区。我想用它。我怎样才能得到选定文本的数据?Linux和剪贴板

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

感谢。

+0

这是X的一个功能... – dmckee 2009-06-27 14:16:00

回答

6

只是一个更准确的答案比保罗迪克森,回答您的需求:

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

如果你使用Qt,你有没有阅读QClipboard上的精细手册页?

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

它从通常的剪贴板获取数据。这不是我需要的。 – Ockonal 2009-06-27 11:17:24

1

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

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

2

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

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

随着QClipboard::Mode你可以选择你想要访问的类型(剪贴板或选择)。重要的部分是你需要了解选择和剪贴板之间的区别。