哪个(如果有的话)实现了Windows原生外观:GTK +,wxWidgets,Qt,FLTK?

Evg*_*eev 30 c++ windows gtk user-interface wxwidgets

我需要编写一个应用程序,它与Windows XP/Vista/7本机编写的内容在视觉上无法区分,使用最现代的Visual Studio默认设置.但我正在开发使用MinGW和Vim(用C++编写).

特别是,我希望以下控件在以上三个版本的Windows上是原生的:表单铬,按钮,复选框,菜单,组合框,进度条,滚动条,富文本框.这对我来说已经足够了.

我知道如果您加载GdiPlus和其他类似的东西riched32.dll,并使用Windows API来实例化控件,那么操作系统将替换其版本的GdiPlus或其他库,因此它看起来像XP上的XP风格控件,Vista上的Vista,等等

但我不想使用普通的Windows API,因为即使检索默认字体也需要半页代码,而且类似的故事无论我想做什么.所以我想使用工具包.

wxWidgets,Qt,GTK +,FLTK似乎是使用最广泛的.但它们都是跨平台的.我使用过跨平台应用程序,其中许多都有外部GUI控件(我称之为小部件).所以我的问题是:这些工具包中的哪一个可以生成上面列出的真正的原生外观UI控件,正确显示在上面列出的三个版本的MSWin上?

我在谷歌图片中输入了每个+"窗口",但很难说,除了FLTK可能无法做到.你们中的许多人必须从头脑中知道答案......

VZ.*_*VZ. 26

除了实现细节之外,wxWidgets的理念是,并且一直都是尽可能地本地化.我们wxWidgets开发人员并不总能实现与本机应用程序无法区分的目标,但我们始终努力做到这一点.AFAIK对于Qt来说这不是一个重要的目标,绝对不是GTK +,所以在我(显然有偏见)的意见中,如果你认真为用户提供最佳体验,wxWidgets是你的最佳选择,特别是在OS X下.

为了更准确地回答您的问题,您在上面列出的所有内容都是使用wxWidgets for Windows中的本机控件实现的(尽管在其他平台下本地不提供富文本控件).

  • wxWidgets wiki(来自讨论页面)的比较的另一个好处是:"Qt使用原生**图形**API来呈现看起来很本地化的界面元素等,但它实际上仍然没有使用本机控件本身这意味着它们确保了原生外观,而不是行为.Qt中的控件看起来可能是本机的,但是操作系统不会将它们识别为它们本身,因为它们实际上并不是本机控件本身,因此,构建 - 在屏幕阅读器等辅助功能工具中,使用Qt应用程序并不总能正常工作(或根本不能)." (5认同)
  • wxWidgets wiki有一个很好的(诚实和全面的)[比较](http://wiki.wxwidgets.org/WxWidgets_Compared_To_Other_Toolkits)和各种其他工具包.一个有趣的观点是,通过使用本机绑定而不是模仿本机外观,wxWidgets应用程序更容易看起来,行为和感觉本机,但这样的负面影响是它们更可能呈现依赖于平台的行为或者显示特定于平台的错误. (3认同)

lib*_*rce 25

我不会谈论FLTK,因为我不知道.

  • wxWidgets使用该平台的本机工具包(Linux上的GTK,Windows上的MFC,MacOS X上的Cocoa).
  • GTK使用主题API来伪造平台的外观(在GTK2上自定义主题引擎,在GTK3上基于CSS的引擎).
  • Qt使用样式来伪造平台的外观和感觉.

wxWidgets API根据我自己的经验非常难看,因为它有太多的方法只能在一个或另一个平台上使用,因为除非你解决它,否则它们会变成非便携式的东西.与GTK +和Qt不同,它还在其用作后端的工具包之上添加了自己的错误层.但是,它使用本机工具包时很难拥有平台的本机外观.

GTK + 3在Windows上仍有一些粗略的优势,自GTK + 3.6以来它正式支持.GTK +项目委托MSYS2项目分发Windows二进制文件.由于你已经在使用MinGW,这几乎就是同一种环境.它们与GTKmm具有良好的C++绑定.但是,您可能需要做一些工作才能获得适合您的Windows版本的主题.

Qt是跨平台C++开发的不错选择,主要目标是Windows,试图模仿平台的原生外观,但也有自己的主题限制.

总而言之,只有2个方法:

  • 通过提供主题(GTK +和Qt)提供自己的小部件并尝试看起来像本机平台的工具包
  • 使用本机窗口小部件但隐藏其抽象层后面的API的工具包(wxWidgets)

两者都有其优点和缺点.

  • 我在谈论wxWidgets API,而不是外观. (11认同)
  • 当wxWidgets使用原生UI时,它是如何"相当难看"的?使用wx开发的应用程序与使用该平台的标准工具包开发的应用程序无法区分. (5认同)
  • @Evgeni:WinAPI加载时间很快,因为它是原生的.但这是一个糟糕的选择,不可维护和低级别,它需要3倍或更多的代码来做同样的事情而不是更高级的工具包.启动时间不是生活中唯一的事情. (3认同)

Ale*_* V. 5

IUP - 便携式用户界面库使用本机小部件、C API 和 Lua 绑定。