无法使用C ++捕获屏幕文本

问题描述 投票:-1回答:1

我让自己发疯,试图在屏幕上画一个简单的盒子。我希望有人能解释我如何完成我想做的事情。

我正在尝试用C ++写一个工具,这将对我的语言学习有所帮助。它将捕获屏幕上的一个区域(单词或句子),处理文本,然后在GUI应用程序中显示有关捕获的文本的信息。

这是我要执行的操作的基本示意图:enter image description here

这应该与gnome-screenshot和Microsoft在Windows上的截图工具之类的屏幕捕获工具非常相似。

第三方应用程序类似于包含可扫描文本的pdf查看器或图像查看器。我的应用程序显示有关捕获的文本的信息。我的应用程序还在屏幕上绘制了一个可调整大小的“捕获窗口”,图中用红色的框包围了单词。

绘制此红色框一直是我过去几周的祸根。所以,我的问题是,人们到底应该怎么做?

我尝试过的事情

我尝试了Xlib,GTK +和QT。

我无法让GTK为我工作,我无法编译示例。安装库时可能出现用户错误。

Xlib很复杂,级别很低,并且不是跨平台的,因此在获得基本窗口后停止在此处尝试。

QT是跨平台的,并且有据可查,因此似乎是一个不错的选择。我将最大的精力用于弄清QT。我与QT有关的问题是,它似乎无法在屏幕上画一个框。我只能在主应用程序或父窗口小部件内绘制框。因此,我似乎不认为QT将支持我在上面的基本图中所做的工作。

所以,我问如何才能做到这一点。我是GUI的新世界,所以我真的不明白要实现自己的想法我需要做什么,更不用说如何正确地做了。

[我主要使用Linux,但我的目标是跨平台最终产品(因此,我专注于QT)。

所以,请帮助我。这应该如何工作?我缺少什么信息?

c++ qt user-interface screenshot xlib
1个回答
0
投票

您需要创建一个包含小部件的无框架,alwaysOnTop窗口。窗口应定义为具有半透明背景,而小部件将用于显示边框(或半透明背景)。然后,您可以通过代码来控制窗口的位置和大小。

这里是一个例子:

demo image

代码:

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();
© www.soinside.com 2019 - 2024. All rights reserved.