有没有像JavaFX那样用cpp创建经典的GUI的方法?我想创建浮动按钮,表格,图形等元素。我知道像qt这样的工具,但我不确定它。我试过win32 API,但它只适用于Windows。如何用C++创建经典的GUI
1
A
回答
5
图形用户界面库通常被称为“窗口小部件工具包”,并且有各种可用的跨平台GUI窗口小部件工具包,但它们很少是很好的UX用户的好主意,因为不同的操作系统环境具有不同的UI范例例如,macOS和Ubuntu在顶部有一个永远在线的菜单栏,而Windows和其他Linux桌面则没有)。
所以,你有两个基本的选择,使:
- 使用单一的跨平台GUI工具包 - 这意味着创建一个GUI项目,但限制你的控件和功能,工具的选择,一般或者因为您的工具包不使用本机窗口小部件(例如Java,WPF,Qt),或者因为您无法使用平台的本地范例,所以您的用户遭受(相对)较差的用户体验。
- 为每个平台编写一个新的本机GUI。这意味着更多的工作,但更好的用户体验。
对于跨平台的GUI工具包,主要选项有:
- Qt的
- GTK +
- wxWidgets的
对于三之间的比较,请参阅本QA: Which, if any, achieves Windows native look: GTK+, wxWidgets, Qt, FLTK?
(TL; DR:WxWidgets uses na tive控制但很难发展; QT提供了最好的开发者体验,但有你需要知道的)
对于每个你需要的目标平台上的原生UI许多其他子弹的点,你需要熟悉每个API:
- 的Win32:
- MFC(空气污染指数是按现代标准难看,但封装主要的Win32 UI模式和API,如公共控件然而,对于上坡的战斗准备,以支持后者天。 UI功能,如高DPI,双向文本和高质量的2D渲染,GDI/GDI +即将出台,这意味着使用Dir ect2D - 这很有趣,因为MFC会采用GDI)
- UWP/XAML:如果您的应用程序可以被沙箱化(并且只能在Windows 10上运行),那么您应该仔细看一下UWP/XAML(它都是原生的,所以CLR不参与)。
- WPF:使用WPF可以更轻松地创建高质量的用户界面,如果您对使用.NET Framework进行依赖并在C#中编写UI代码的应用程序感到满意 - 但是,皮肤上的WPF应用程序在Windows 10中暴跌(即它们很丑陋),WPF的默认控制集非常有意思 - 但如果你有手段(即时间,金钱,人),那么你可以获得很好的结果 - 作为奖励WPF的XAML通常可以移植到UWP中。
- macOS:可可 - 你将很难在C++中做到这一点。如果你的目标是macOS,我强烈建议你在Swift中编写你的UI层(如果你需要,可以使用Objective-C),然后使用C++桥连接到你的其他应用程序代码。
- Linux:由于Linux只是一个内核,所以“本机”小部件集取决于用户的桌面环境 - 但大多数桌面程序似乎都使用GTK。如果你打算使用GTK,那么你也可以使用GTK的跨平台功能来支持Windows和MacOS。
总之:这很困难,很多工作。 :)并解释了为什么现在(2017年中)的许多软件通常都是直接在网络上构建为Web应用程序(例如Facebook,StackOverflow,SalesForce)或使用Electron(例如Slack,VS Code,Atom)其他托管的webiew(PhoneGap应用程序,Spotify等)。
相关问题
- 1. C# - 如何通过GUI使用字典
- 2. 如何创建GUI
- 3. 最快的C++ GUI创建
- 4. 在C \ C++中使用XML创建GUI
- 5. 如何从经典ASP调用参数化函数在C#中创建
- 6. ZedGraph如何使用XAxis.Type = AxisType.Text创建经典折线图
- 7. 经典的ASP脚本来创建XML
- 8. Pdf创建/从经典的asp操作?
- 9. 如何在Microsoft Azure中创建新的经典asp项目
- 10. 如何在经典的asp中创建表单验证?
- 11. 如何在经典的asp中创建缩略图图像?
- 12. 如何使用C++为Windows应用程序创建GUI?
- 13. 如何开始使用C#创建应用程序GUI?
- 14. 使用C++创建Windows Phone 8 GUI
- 15. 如何使用TkInter创建轻型GUI
- 16. 如何使用GUI创建标识列?
- 17. 在经典ASP中创建文件夹
- 18. 如何去使用C创建类似于GUI的Windows使用C
- 19. 如何使用GUI在C++中创建框架/窗口?
- 20. 如何使用ASP经典:(
- 21. 如何使用ASP经典
- 22. 如何通过修改经典主题创建LifeRay主题?
- 23. 如何创建本字典?
- 24. 如何创建字典
- 25. 如何在C#中创建可插拔的GUI和DLL#
- 26. C#使用字典创建Json类
- 27. 如何使用字典创建条件?
- 28. 如何用字典创建数组?
- 29. 如何创建通用字典?
- 30. 在C/C++中创建Windows服务的任何示例? (无GUI)
我不同意JavaFX是一个经典的GUI框架。用于C#的JavaFX或swing或WPF是GUI的高级框架。 java.awt类似于传统的GUI,并且在这个区域有很多C++ GUI库。最接近JavaFX的是QT afaik,[用他们的动画脚本和所有](https://www.youtube.com/watch?v=VAhLnJc5iEY)。 – zahir