我已经离开GUI编程很长一段时间了,所以请原谅我的无知。
我想尝试以下方法:
我相信这种配置可能会让我得到我想要的东西:
再一次,抱歉我的无知,但这可能吗?这样理智吗?是否有任何真实的开源示例可以实现这样的目标?
答案 0 :(得分:5)
有相当多的OS X应用程序具有完全定制设计的外观,不使用很多库存控件。我想到了iStat Menus,但还有许多其他例子。它们看起来仍然很好,但它是通过手动设计它们看起来很好并与OS X应用程序的整体外观“网格化”完成的。甚至他们的首选项窗格也不使用库存按钮。
因此,你可以使用Qt走得很远,你只需支付关闭注意你正在做的事情 - 类似于其他开发者支付关闭的方式即使使用Cocoa也要注意。您会发现Qt的控件提供的功能通常超出Cocoa提供的功能。
也就是说,在OS X上,有时您可能需要运行一些期望CFRunLoop
存在的本机代码。很高兴知道Qt的事件循环已经为你旋转了一个runloop,所以只要你在给定的线程中有一个事件循环旋转,就可以使用基于runloop的代码 - 默认的runloop是由Qt的{{1 (在其内心的某处)。对于非gui线程,未经修改的QEventDispatcher
为您完成。例如,这对于使用异步QThread
功能非常有用。 Another answer of mine提供了一些Cocoa鼠标事件抓取代码。使用Carbon的先前版本可以在该答案的编辑历史中找到。
同样适用于Windows:Qt为其拥有的所有顶级窗口运行消息接收器,您可以使用qtwinmigrate集成本机控件/窗口。您还可以使用Active Qt framework集成ActiveX控件。
答案 1 :(得分:3)