gpt4 book ai didi

c++ - 为 Windows 编译的 Qt 是 Low Level 的 win api

转载 作者:搜寻专家 更新时间:2023-10-31 00:14:35 25 4
gpt4 key购买 nike

Qt 是跨平台的c++ Gui Library。一次编码,针对不同的平台进行编译。例如,我已经为 Windows (x86) 编译了一个项目(体面的文本编辑器,几乎没有工具栏)或任何此类程序。

声明 1:Program.exe 入口点将为 WinMain。

声明 2:将使用“CreateWindow”win32 api 创建文本编辑器和工具栏。 Qt 有自己的类来实现,但要求 OS(Windows) 创建工具栏或文本编辑器,与 OS(Windows) 程序 exe 接口(interface)。操作系统了解它所知道的,它对 Qt 类一无所知,因此要创建工具栏或文本编辑器程序必须使用 win32 api。

声明3:所有事件处理(按钮点击、鼠标点击)都将使用windows messeging系统处理。

注意:根据我的理解,我似乎正在使用 win32 api glass 查看所有内容。

最佳答案

  1. 正确。 WinMain 实现由 Qt 库提供。

  2. 对了一半。顶层窗口是使用 CreateWindow 创建的。子部件,例如非顶层工具栏,是 Qt 自己的部件,在您的应用程序之外是不透明的。它们仅通过可访问性 API 公开。这允许您创建比 Windows 能够处理的更多的小部件。一百万个子部件是可行的,即使不是特别快。

  3. 正确 - 没有其他办法。当然,Qt 会立即将本地消息转换为 QEvent 实例,并在内部将它们分派(dispatch)给各种 QObject 实例。在 Qt 领域,所有事件都必须由 QObject 实例接收。

您关于 winapi 与内核有任何关系的断言是不正确的。 Winapi 是由一堆用户空间 DLL 实现的。您可以自己实现这些 DLL。这些 DLL 本身使用 native api 调用内核。这是内核实际暴露给用户空间的 API。

关于c++ - 为 Windows 编译的 Qt 是 Low Level 的 win api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22601878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com