C++ 为跨平台应用程序创建许多本机GUI前端

C++ 为跨平台应用程序创建许多本机GUI前端,c++,macos,cocoa,qt,cross-platform,C++,Macos,Cocoa,Qt,Cross Platform,我已经远离GUI编程很长一段时间了,请原谅我的无知 我想尝试以下几点: 编写Mac OSX应用程序,但仍然能够端口到WIN/Linux(即用Obj-C GUI C++内核) 避免使用OSX上的Qt/其他工具包(即直接与Cocoa交谈-我觉得与我系统的其他部分相比,我使用的许多Qt应用程序都显得非常突出) LI>不重要,但避免VisualStudio会很好,如果这意味着我可以自由使用新的C++特性,即使它们能帮助创建更好的代码。 我相信这种配置可以满足我的需求: 核心C++静态库< /LI

我已经远离GUI编程很长一段时间了,请原谅我的无知

我想尝试以下几点:

  • 编写Mac OSX应用程序,但仍然能够端口到WIN/Linux(即用Obj-C GUI C++内核)
  • 避免使用OSX上的Qt/其他工具包(即直接与Cocoa交谈-我觉得与我系统的其他部分相比,我使用的许多Qt应用程序都显得非常突出)
  • <> LI>不重要,但避免VisualStudio会很好,如果这意味着我可以自由使用新的C++特性,即使它们能帮助创建更好的代码。
我相信这种配置可以满足我的需求:

  • 核心C++静态库< /LI>
  • OSX图形用户界面(可可)
  • < > Windows GUI(Qt+MINW?)或(没有新的C++特征,VisualStudio+MaungC++/Cy//???)/LI>
  • Linux GUI(Qt)

再一次为我的无知感到抱歉,但这可能吗?这是理智的吗?有没有真正的开源示例可以实现这样的功能?

我认为您甚至应该在OSX上尝试Qt。Qt允许应用程序的本机/自定义外观(您提到的那些情况可能是不好的示例-您可能没有注意到许多其他应用程序也使用Qt)

我通常用于多平台开发的工具:

  • C++(现在是C++11,因为所有主要编译器或多或少都支持它)
  • Qt
  • 竣工系统生成器

如果您使用此工具集,您可以选择您喜欢的任何平台进行开发,并且仍然是多平台的,而不需要在其他平台上进行大量工作。

有相当多的OS X应用程序具有完全定制的外观,不使用很多库存控件。我想到了,但还有很多其他的例子。它们看起来仍然很好,但这是通过手动设计来完成的,使它们看起来很好,并与OSX应用程序的整体外观“协调”。甚至他们的首选项窗格也不使用库存按钮

因此,使用Qt可以走得很远,您只需密切关注您正在做的事情——就像其他开发人员在使用Cocoa时也密切关注的方式一样。您会发现Qt的控件提供的功能通常高于Cocoa中提供的功能

这就是说,在OSX上,有时您可能需要运行一些本机代码,希望出现
CFRunLoop
。很高兴知道Qt的事件循环已经为您旋转了一个runloop,所以只要您在给定的线程中有一个事件循环旋转,您就可以使用基于runloop的代码-默认的runloop是由Qt的
QEventDispatcher
实现提供的(在其内部的某个地方)。对于非gui线程,未修改的
QThread
会为您执行此操作。例如,这对于使用异步
IOKit
功能非常有用。介绍一些Cocoa鼠标事件捕获代码。在该答案的编辑历史中可以找到以前使用碳的版本


Windows也是如此:Qt为其拥有的所有顶级窗口运行消息接收器,您可以使用集成本机控件/窗口。您还可以使用。

很好地了解集成ActiveX控件。有什么值得我借鉴的优秀例子吗?谢谢,特别是为将来提供的所有节省时间的信息。现在回想起来,我确实注意到我最喜欢的一些GUI没有过度使用本机控件。很高兴知道我可以安全地使用Qt。如果是C#那么为什么不使用Java+Swing(极端跨平台)或javafx呢?或SWL/JFace(本机控件,需要DLL)