3

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

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

谢谢。

4

4 回答 4

7

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

QClipboard* clipboard = QApplication::clipboard();
QString selectedText = clipboard->text(QClipboard::Selection);
于 2009-06-27T17:10:30.250 回答
3

您需要区分选择和剪贴板。该QClipboard文档在“ X11 用户注释”部分中有此内容:

X11 窗口系统具有单独的选择和剪贴板的概念。选择文本后,它立即可用作全局鼠标选择。全局鼠标选择稍后可能会复制到剪贴板。按照惯例,鼠标中键用于粘贴全局鼠标选择。

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

于 2009-06-27T20:28:29.590 回答
1

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

QClipboard *clipboard = QApplication::clipboard();
QString clipboardText = clipboard->text();
于 2009-06-27T11:06:17.833 回答
1

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

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

于 2009-06-27T20:08:29.177 回答