elc*_*ano 0 c++ user-interface
我编写了一个可以在命令行中使用的C++软件,显然,它可以在不同的平台(Linux,Windows和Mac)中编译和执行.
这个软件非常简单,它只是在命令终端中显示一个菜单,有几个选项,相应地输入文件(.csv),几秒钟后运行,并打印输出文件(也是.csv).
现在我想为它编写一个独立于平台的GUI而不改变我原来的源代码.
哪种语言最好?C++?Java的?有没有人对此有经验或建议?
非常感谢你!
您将始终必须更改一些C++源代码,特别是因为GUI工具包都是事件驱动的,因此基于某些事件循环(通常由工具包库提供).
或者,您可能将GUI作为一个单独的程序(启动命令行事物),与某些形式的IPC -often 管道通信- 使用命令行程序,您可能仍需要扩展
我建议使用Qt5,这是一个用于C++的跨平台(Linux,Windows,MacOSX,Android,....)图形用户界面框架库.如果可能的话,在C++ 11中使用最新版本的Qt和代码(因为闭包变得非常有用).
另一种方法(仍需要架构更改)可能是通过使用某些HTTP服务器库(如libonion或Wt(或POCO))使您的软件成为专用Web服务器; 然后GUI将是任何最近的Web浏览器.您可能需要一些网络编码技能(AJAX,Javascript,...),您将更好地理解延续和Web浏览之间的关系.(另见这个和那个).
如果您的软件运行得足够快(例如少于几分之一秒),您可以使其核心处理成为GUI程序的回调函数(或Qt插槽).但是你不应该运行一个超过十分之几秒的函数(否则,用户界面将没有足够的响应),至少不在主GUI线程中.否则,将计算分成几个部分或切片(例如,GUI工具包中的"空闲处理",CPS和协同程序是相关概念),以确保事件循环频繁(每秒至少5或10次)重新启动,或采用多线程方法(在GUI主线程之外使用计算线程),这会带来痛苦的同步问题(例如,您将使用互斥锁).
顺便说一句,好的问题不是"最好的" 语言,而是找到一个足够好的方法,库和框架.