2009-06-27 138 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你可以選擇你想要訪問的類型(剪貼板或選擇)。重要的部分是你需要了解選擇和剪貼板之間的區別。