如何从另一个应用程序读取QTextEdit内容
How to read QTextEdit content from another application?
我目前正在尝试制作一个调试工具,它将位于专有应用程序(通过BLE与硬件接口)之上。
在这个应用程序里面(用QT写的)有一个文本框,它有来自硬件的日志信息流,我想做一个应用程序,它将监视该文本框并处理被记录的数据。
我打开spy++,找到了我需要的窗口的句柄,然而,它只显示为"QWidget"和WM_GETTEXT没有提取任何数据。这两个链接还提到QT小部件不能被标准的Win32 API读取(这对我来说很奇怪,因为我确信所有东西都需要通过Windows GUI层):https://forum.qt.io/topic/36867/accessing-qtextedit-from-another-program/9https://forum.qt.io/topic/19256/how-get-handle-of-qwidget-child-with-vb-net/9
我愿意接受任何选择!在这一点上我是语言不可知论者。我如何读取QTextEdit日志数据?
Qt的小部件支持辅助技术 (AT)开箱即用。在Windows上,Qt的可访问性可以通过MSAA和IAccessible2获得。两者都能够检查小部件树,并跨进程边界交付小部件的属性。
两种接口均为Qt官方支持
您无法读取QTextEdit
的内容,因为它是一个外来小部件。您可以在QWidget文档中阅读更多内容:
在Qt 4.4中引入,外来小部件是不为窗口系统。它们没有关联的本机窗口句柄和他们在一起。这个功能大大加快了小部件的绘制速度,调整大小,并删除闪烁。
如果您需要本机窗口的旧行为,您可以选择以下选项之一:
在您的环境中使用QT_USE_NATIVE_WINDOWS=1
在应用程序上设置Qt::AA_NativeWindows属性。所有
在widgets上设置Qt::WA_NativeWindow属性:widget本身所有的祖先都将成为本地的(除非Qt::WA_DontCreateNativeAncestors设置).
调用QWidget::winId强制本地窗口(这意味着3)。
设置Qt::WA_PaintOnScreen属性以强制使用本机窗口
还有一个可能对你有用的Qt自省工具:GammaRay。我个人没有使用它——只是读了一个小概述,但它看起来很有前途。
- 理解boost::asio-async_read在无需读取内容时的行为
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 无法找到/读取配置文件.conf-FileIOException
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++将文本文件中的数据读取到结构数组中
- 正在将csv文件读取为双精度矢量
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 为什么在读取文件大小时文件IO速度会发生变化
- 正在读取二进制文件(is_open)
- 如何在c++中从文本文件中逐行读取整数
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- 独立读取-修改-写入顺序
- 从文本文件中读取时钟时间和事件时间并进行处理
- 从qtextedit中读取多个值,并将它们作为不同的数字
- 如何从另一个应用程序读取QTextEdit内容
- 如何从文件中读取unicode并在QTextEdit中显示数据