gpt4 book ai didi

c++ - 哪个(如果有)实现 Windows 原生外观 : GTK+, wxWidgets、Qt、FLTK?

转载 作者:IT老高 更新时间:2023-10-28 12:45:00 26 4
gpt4 key购买 nike

我需要编写一个应用程序,该应用程序在视觉上与为 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 版本上正确显示?

我已经在 Google 图片中输入了每个 +“windows”,但很难说,除了 FLTK 可能无法做到这一点。你们中的许多人一定知道答案了...

最佳答案

FLTK我不知道就不说了。

  • wxWidgets 使用平台的原生工具包,(Linux 上的 GTK,Win32 GUI API在 Windows 上,Cocoa 在 MacOS X 上)。
  • GTK 使用主题 API 来伪造平台的外观和感觉(GTK2 上的自定义主题引擎,GTK3 上基于 CSS 的引擎)。
  • Qt 使用 styles伪造平台的外观和感觉。

根据我自己的经验,wxWidgets API 非常难看,因为它有太多的方法只能在一个或另一个平台上使用,这使得东西不可移植,除非你想办法解决它。与 GTK+ 和 Qt 不同,它还在它用作后端的工具包之上添加了自己的错误层。但是,由于它使用的是原生工具包,它会努力保持平台的原生外观。

GTK+ 3 在 Windows 上仍有一些粗糙的边缘,它从 GTK+ 3.6 开始正式支持。 GTK+ 项目委托(delegate)给 MSYS2项目 Windows 二进制文件的分发。由于您已经在使用 MinGW,这几乎是相同的环境。他们与 GTKmm 有很好的 C++ 绑定(bind)。但是,您可能需要做一些工作才能使主题适合您的 Windows 版本。

Qt 是跨平台 C++ 开发的不错选择,主要目标是 Windows,它试图模仿平台的原生外观,但是 has its own theming limitations too.

总结起来,只有两种方法:

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

两者各有利弊。

关于c++ - 哪个(如果有)实现 Windows 原生外观 : GTK+, wxWidgets、Qt、FLTK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18980426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com