为跨平台应用程序创建许多本机 GUI 前端
Creating many native GUI frontends for a cross-platform application
我已经离开GUI编程一段时间了,所以请原谅我的无知。
我想尝试以下方法:
- 编写一个Mac OSX应用程序,但仍然能够移植到Win/Linux(即使用Obj-C GUI的C++核心)
- 避免在OSX上使用Qt/其他工具包(即直接与Cocoa交谈 - 我觉得与系统的其他部分相比,我使用的许多Qt应用程序都像拇指酸痛一样突出)
- 不是那么重要,但如果Visual Studio有助于创建更好的代码,那么避免使用Visual Studio会很好,这意味着我可以自由地使用更新的C++功能,即使在Windows上也是如此。
我相信这种配置可能会让我得到我想要的东西:
- 核心C++静态库
- OSX GUI (Cocoa)
- Windows GUI (Qt+MinGW?)OR (没有新的C++功能,Visual Studio + ManagedC++/C#/????)
- Linux GUI (Qt)
再一次,对不起我的无知,但这可能吗? 这是理智的吗? 有没有现实世界的开源示例来完成这样的事情?
相当多的OS X应用程序具有完全定制设计的外观,不使用太多的库存控件。 我想到了iStat菜单,但还有许多其他例子。它们看起来仍然不错,但这是通过手动设计它们看起来不错并与OS X应用程序的整体外观"融合"来完成的。甚至他们的偏好设置面板也不使用股票按钮。
因此,你可以使用Qt走得很远,你只需要密切关注你正在做的事情 - 类似于其他开发人员在使用Cocoa时密切关注的方式。您会发现Qt的控件提供的功能通常超出Cocoa提供的功能。
也就是说,在OS X上,有时您可能需要运行一些需要存在CFRunLoop
的本机代码。很高兴知道Qt的事件循环已经为你旋转了一个运行循环,所以只要你在给定的线程中有一个事件循环旋转,你就可以使用基于runloop的代码 - 默认的运行循环是由Qt的QEventDispatcher
实现提供的(在其内部的某个地方)。对于非 gui 线程,未修改的QThread
会为您完成。例如,这对于使用异步IOKit
功能很有用。我的另一个答案是一些可可鼠标事件抓取代码。使用Carbon的先前版本可以在该答案的编辑历史记录中找到。
Windows也是如此:Qt为其拥有的所有顶级窗口运行消息接收器,您可以使用qtwinmigrate集成本机控件/窗口。您还可以使用 Active Qt 框架集成 ActiveX 控件。
我认为您即使在OSX上也应该尝试Qt。Qt允许应用程序的本机/自定义外观(你提到的那些情况可能是不好的例子 - 你可能没有注意到许多其他应用程序也使用Qt)。
我通常用于多平台开发的工具:
- C++(现在C++11,因为所有主要编译器或多或少都支持它)
- 提高
- Qt
- CMake 作为构建系统生成器
如果您使用此工具集,您可以选择您喜欢的任何平台进行开发,并且仍然是多平台的,而无需在其他平台上进行大量工作。
- C++GTKMM gui循环依赖关系
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 在哪里放置我的函数?进入我的母语 Gui 还是进入我的演示者?
- 如何在带有 gdb GUI 前端的 ARM gdbserver 的 PC 上执行远程 gdb 会话?
- 在 Gui Win32 中创建子窗口C++
- 如何防止 std::thread 在 QT 中冻结 GUI?
- 调试控制台 ChessEngine.exe "used"在另一个应用程序(国际象棋 GUI)中
- 更改 Windows GUI 中静态文本框的字体大小
- 我不知道如何使用代码块win32 gui
- Qt GUI使用Qfiledialogbox和qlabel显示视频,这是我的代码
- QtConcurrent - 在发布到 UI 线程的数千个结果中保持 GUI 响应
- 德尔福在回调中出现 GUI 问题
- 如何将 AST 用于自定义前端操作和 clang 静态分析
- PyTorch C++ 前端向前返回多个张量
- 从 GUI 文件资源管理器执行程序,并且不生成终端
- 将Python GTK GUI前端与后端一起使用C++后端
- 为跨平台应用程序创建许多本机 GUI 前端
- 在Linux中使用Netbeans调试具有GUI前端的C++源代码
- 交易应用程序使用哪种前端/gui