从windowsgdi到Qt的转换

从windowsgdi到Qt的转换,qt,winapi,Qt,Winapi,我正在评估将我的应用程序(Win32)转换为Qt的可行性。我想转换代码,这样我就可以逐渐地将单个代码库从WindowsGDI转换为Qt,而不是克隆源代码和重复代码。通过翻转一个全局开关,或者在项目属性中声明一个manifest常量,我想要转换和测试,同时能够在必要时发布生产版本(使用旧代码) Windows从一个WinMain()函数开始,我看到Qt有一个main() 是否有一种技术来组织源代码以促进这一点?构建代码的最佳方式是什么?如果“如何促进”是指“如何更改Windows可执行入口点”,那

我正在评估将我的应用程序(Win32)转换为Qt的可行性。我想转换代码,这样我就可以逐渐地将单个代码库从WindowsGDI转换为Qt,而不是克隆源代码和重复代码。通过翻转一个全局开关,或者在项目属性中声明一个manifest常量,我想要转换和测试,同时能够在必要时发布生产版本(使用旧代码)

Windows从一个
WinMain()
函数开始,我看到Qt有一个
main()

是否有一种技术来组织源代码以促进这一点?构建代码的最佳方式是什么?

如果“如何促进”是指“如何更改Windows可执行入口点”,那么 在VS项目设置中:“配置属性>链接器>高级”将此“mainCRTStartup”放入“入口点”


如果需要从命令行执行此操作,请选中此项:

您不能将UI从本机Windows逐渐移植到Qt。Qt是全有或全无。这两者之间没有任何区别。坦白说,我不知道你为什么要这么做。你有一个功能齐全、快捷的用户界面,支持键盘工作,你想牺牲这一切吗?为什么?@IInspectable Er跨平台就是其中之一motivation@Dav:如果跨平台是动机,那么肯定有更好的选择(例如wxWidgets)。如果质量UI很重要,Qt可能是最后考虑的选项。@ iStCurt,这显然是错误的,并且您似乎有一些反QT偏倚;仅基于功能,wxWidgets的功能远不如Qt(如果您关心应用程序的未来功能!)。已经有大量的工业项目以增量的方式从各种工具箱转换为Qt。Qt与本机Windows消息泵互操作。将
TranslateMessage()、DispatchMessage()
循环替换为
app.exec()
,大多数情况下都可以完成。然后可以逐个移植这些小部件。在大多数情况下,它相当简单。@Kub:我指的是功能,它是有效的。Qt无法在该部门交付其GUI实现。虽然
DispatchMessage
起作用,但
app.exec()
根本不起作用。偶尔,Qt会耗尽消息队列,稍后再重播这些消息。此时,
GetMessageTime
将不再返回所需的值,
GetKeyState
也不会返回所需的值。同样地,
GetTouchInputInfo
响应
WM\u TOUCH
也将失败。虽然你认为我“有一些反Qt偏见”,但这是不正确的。我对任何不能交付的图书馆都有强烈的偏见。