Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt应用程序在Windows下看起来和感觉都是本地的吗?_Windows_Qt - Fatal编程技术网

Qt应用程序在Windows下看起来和感觉都是本地的吗?

Qt应用程序在Windows下看起来和感觉都是本地的吗?,windows,qt,Windows,Qt,我将要将我的一个Mac应用程序移植到Windows。Mac应用程序使用苹果原生的Cocoa/Appkit框架作为用户界面。UI是Obj-C代码,核心应用程序功能是可移植的C++代码。 现在,我正在寻找一种将应用程序移植到Windows的方法,让它看起来像Windows用户的本地应用程序。我的选择是微软的MFC和Qt框架。虽然我确信MFC应用程序具有本机的外观和感觉,但我从MFC编码框架本身所记得的是可怕的。我从开发人员的角度研究了Qt并喜欢它 但由于我不是Windows用户,我不知道Qt应用程序

我将要将我的一个Mac应用程序移植到Windows。Mac应用程序使用苹果原生的Cocoa/Appkit框架作为用户界面。UI是Obj-C代码,核心应用程序功能是可移植的C++代码。 现在,我正在寻找一种将应用程序移植到Windows的方法,让它看起来像Windows用户的本地应用程序。我的选择是微软的MFC和Qt框架。虽然我确信MFC应用程序具有本机的外观和感觉,但我从MFC编码框架本身所记得的是可怕的。我从开发人员的角度研究了Qt并喜欢它

但由于我不是Windows用户,我不知道Qt应用程序是否具有本机Windows外观


因此,我的问题是:我能让一个Qt应用程序(不用做很多工作)看起来像是用本机Windows框架编写的吗。是的,这是可能的,不是的,它不需要做很多工作。

您可以轻松更改Qt应用程序的样式。在Windows和Mac上,默认样式实际上是使用本机函数来绘制窗口、控件等

此外,Qt确实采取了许多措施,以便即使是应用程序的最小方面(您甚至不会想到的事情)也能模拟特定平台的本机行为。因此,在移植时,您的Qt应用程序也可以替换当前的Mac应用程序

我强烈建议您不要使用MFC,您会后悔的(特别是如果您从未使用过本机Win32 API)。在灵活性和易用性方面,它与Qt完全相反。

如您所读:

Qt小部件是传统的用户界面元素,通常 可在桌面环境中找到。这些小部件很好地集成到 在Windows、Linux和Linux上提供本机外观的底层平台 MacOSX

看看:

Qt对小部件样式和主题的支持使您的应用程序能够 适合本机桌面环境

您可能对名为:

Qt在每个受支持的平台上都使用本机风格的API,但是 有一些额外的技巧可以用来确保你的Qt是基于 应用程序的外观、手感和性能都更好。本演示将 浏览示例、提示和记号,帮助您做出正确的选择 应用程序在所有平台上看起来都很棒


不,他们没有。很接近,但是控件看起来不是本地的。人们的意思是,它使用Win32 API来呈现控件,类似于Windows呈现本机控件的方式,因此性能应该是可比较的


只有特定于Windows的框架(如.NET Windows窗体)才对常见的UI元素使用实际的本机Win32控件。

它们看起来有点像,感觉不太像

尤其是如果你在设计应用程序时考虑到了windows(就像你对cocoa所做的那样)。我还没有看到彩带(有一个商业第三方克隆)和MFC蓝/黑风格或分组图标视图中的列表视图

不幸的是,WxWidgets编程起来也非常难看。当然比MFC更好。 如果你想要一个真正的本地应用程序,只有两个选择,MFC(如果你需要快速和小型)或.NET(如果你不在乎速度)

以前的一家公司在MFC上有一个50000 LOC层,这是编程这个1992年的框架更舒适所必需的)。不幸的是,我不知道市场上有什么可以做同样的事情


问题是,你的客户是否真的欣赏一种本土化的外观,它是否会成为一种销售因素。我现在使用QT,因为它已经足够好了

如果你检查Qt的来源,你会发现这些陈述是误导性的。Qt重新实现了Windows的外观和感觉。例如,如果它调用本机GUI函数,这些样式将无法在Linux上工作。更准确地说,它使用本机光栅图形功能。@user1095108我想您是在考虑Qt的“Windows 95”主题吧?那确实是一种模仿。但是本机主题实际上在Linux或Windows以外的任何地方都不起作用。我指的是
QWindowsStyle
,它是
QWindowsXPStyle
QWindowsVistaStyle
的基础,我不知道它是'95'。怎么能说“主题”?这是一种风格。例如,在Mac中,在使用Objective C+Cocoa/Swift设计的应用程序中,滚动条显示反弹效果,如果你以高“速度”点击滚动区域的顶部或底部,你会看到滚动条和区域反弹到一定距离,然后再返回。Mac上的Qt应用程序不会表现出这种行为..+1建议远离MFC。除非你真的必须这样做,因为你的程序已经用MFC写了。不仅Windows特定的框架使用本机API。也有一些类似WXWIDGoSS的跨平台框架。另一个要考虑的问题是,对于一些应用程序,同一用户将同时使用不同的OSES,并且可能会欣赏不同平台上的应用程序自己的外观和感觉。这是QT,而不是QT(快速时间)。什么时间?这里有第三个选项:WTL。它比MFC优雅得多。