簡體   English   中英

QT 無法在屏幕上繪制框(QRect 和 QRubberBand)

[英]QT Unable to draw box on screen (QRect and QRubberBand)

我正在嘗試在 C++ 中編寫一個工具來幫助我學習語言。 它將捕獲屏幕上的一個區域(一個單詞或句子),處理文本,然后在 GUI 應用程序中顯示有關捕獲文本的信息。

這是我正在嘗試做的基本圖表: 在此處輸入圖像描述

這應該與 gnome-screenshot 等屏幕捕獲工具和微軟在 Windows 上的截圖工具非常相似。

第三方應用程序類似於 pdf 查看器或包含可掃描文本的圖像查看器。 我的應用程序顯示有關捕獲的文本的信息。 我的應用程序還在屏幕上繪制了一個可調整大小的“捕獲窗口”,如圖中圍繞單詞的紅色框所示。

我的問題是關於在屏幕上繪制這個紅色框。 如何在屏幕上繪制一個紅色框? 我一直在嘗試使用 xLib 和 QT 來執行此操作,盡管我更願意使用 QT 來執行此操作,因為它有更好的文檔記錄和跨平台。

編輯:我修改了問題,使其更簡潔明了我的目標,以及接受的答案如何解決我的問題。

您需要創建一個包含小部件的無框架、alwaysOnTop window。 window 應定義為具有半透明背景,而小部件將用於顯示邊框(或半透明背景)。 然后,您可以通過檢測鼠標在 window 上的點擊來打開 Z437175BA419149EDEE0077 的代碼,通過代碼操作 position 和 window 的大小

這是一個例子:

演示圖像

編碼:

QMainWindow window;
window.setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
window.setAttribute(Qt::WA_TranslucentBackground, true);
window.setFixedSize(80, 20);
window.move(500,500);

QWidget widget(&window);
widget.setStyleSheet("border: 3px solid rgb(255,0,0)");

window.setCentralWidget(&widget);
window.show();

接受的答案是這個問題的首選解決方案,但在回答了這個問題后,我發現了一個示例項目,它完成了我使用 xlib 的目標。

https://github.com/gvalkov/xrectsel

為了完整起見,我將其包括在內,但 QT 解決方案具有更好的 API 並且是跨平台的。 所以,這更適合我對這個程序的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM