Qt是跨平台的c ++ Gui Library.Code一次并为不同的平台编译。举个例子,我编写了一个Project(带有很少工具栏的体面文本编辑器)或任何Windows(x86)程序。
声明1:Program.exe入口点为WinMain。
声明2:文本编辑器和工具栏将使用" CreateWindow" win32 api。 Qt有自己的类来实现,但要求OS(Windows)创建工具栏或文本编辑器,程序exe接口与OS(Windows)。操作系统了解它知道它对Qt类一无所知,所以要创建工具栏或文本编辑器程序必须使用win32 api。
声明3:所有事件处理(按钮单击,鼠标单击)将使用Windows messeging系统进行处理。
注意:根据我的理解,似乎我正在使用win32 api glass查看所有内容。
答案 0 :(得分:6)
正确。 WinMain
实现由Qt库提供。
半正确。顶级窗口使用CreateWindow
创建。子窗口小部件,例如非顶层工具栏是Qt自己的窗口小部件,在应用程序之外是不透明的。它们仅通过辅助功能API公开。这允许您创建比Windows能够处理的更多小部件。如果不是特别快,一百万个儿童小部件是可行的。
正确 - 别无他法。当然,Qt会立即将本机消息转换为QEvent
实例,并在内部将它们分派到各种QObject
实例。在Qt-land中,所有事件必须由QObject
实例接收。
你的断言中你认为winapi与内核有任何关系是错误的。 Winapi由一堆用户空间DLL实现。您可以自己实现这些DLL。这些DLL本身使用本机api调用内核。这是内核实际暴露给用户空间的API。