GTK 3.x 是一个真正的跨平台解决方案吗?

2024-03-10

我已经尝试过 Qt 4.x/5.x 和 GTKmm 3.x,相比 Qt,我更喜欢 GTKmm。

现在我刚刚发现 GTKmm 3.x 不提供 Windows 移植,他们也不提供 Mac 移植,基本上我除了 Linux 的库/源代码/二进制文件之外什么也找不到。 显然,Windows 支持(我不确定 Mac OS 的情况)在 2.x 时代就被放弃了,并且今天仍然不存在。

由于特定原因,我计划使用 GTK 3.x,尤其是 3.x 分支引入的一些新功能,因此使用 GTK 2.x 是一个不可行的选择。

现在我问:Windows 和/或 Mac 对 GTK 3.x 的支持有新的东西吗?有什么东西吗?甚至实验项目?


不,事实并非如此——至少当您想要为未来保驾护航时。 MacOSX 和 GTK 移植并不完美,而且完全是自愿的,这意味着对于如此复杂和规模的程序,它们并不是不积极开发的。没有人关心在添加新功能之前先实现旧功能。

GTK3 发布已经快两年了,但仍然没有官方的 Windows 二进制发行版。在一次 GNOME 会议上,有人公开讨论 GTK4 是否应该只用于 Linux。好吧,我猜他们指的是 Linux/BSD - 但 Wayland 目前是纯 Linux,而 BSD 确实缺乏桌面开发人员。

这应该足以吓到任何一个需要现实世界投资的严肃项目的人。

我还坚信跨平台 GUI 工具包已经成为过去。抽象您的应用程序的 GUI 并为每个平台进行开发。随着 AppStore 的成功,您将被迫越来越多地使用本机平台风格。如果您的应用程序看起来有所不同,那么它已经被苹果的 AppStore 拒绝。 Windows 现在正在强制执行 WinRT。请做好准备,这在未来会变得更加重要。

因此,正确的方法是使用本机小部件集的 WxWidgets。跳过 GTK

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GTK 3.x 是一个真正的跨平台解决方案吗? 的相关文章

  • 数据结构的优化存储以实现快速查找和持久化

    Scenario 我有以下方法 public void AddItemSecurity int itemId int userIds public int GetValidItemIds int userId 最初我正在考虑表单上的存储 i
  • 在 C++ 中,当我将值传递给函数时,它是否总是转换为适当的类型?

    如果我有一个像这样的函数void func size t x 我称该函数为func 5 5 立即转换为size t类型 这通常适用于所有类型吗 我问这个问题是因为我发誓我见过人们编写代码 他们做类似的事情func 5 0 将 5 作为双精度
  • Windows 10 UWP 中的视觉状态管理器未在页面加载时应用初始状态

    我有一个带有相关面板的页面 可以根据宽度重新组织 但是 除非宽度 gt 720px 否则它似乎不会在加载时应用任何状态 如果我在加载页面后调整页面大小 则两种状态都有效 解决方法是检查加载页面上的窗口大小并手动选择状态 但我相信这应该自动处
  • 函数的不明确的引用/值版本

    考虑以下函数原型 void Remove SomeContainer Vec const std size t Index SomeContainer Remove SomeContainer Vec const std size t In
  • 有没有办法让我的程序用更少的代码运行?

    我为学校作业编写了以下代码 它编译并打印所有正确的消息 但出于我自己的好奇心 我想知道我的代码是否可以缩短并且仍然有效 我尝试了 signal 而不是 sigaction 但我听说 sigaction 比 signal 更受青睐 此外 此任
  • ASP.NET Core 中 AsNoTracking 的模拟或更好的解决方法

    您如何模拟 AsNoTracking 或者是否有更好的解决方法来解决此问题 Example public class MyContext MyContextBase Constructor public MyContext DbContex
  • 通过 EUSART PIC18F45K80 打印消息

    我正在尝试向 Docklight 发送串行消息 但始终收到空值 我正在使用带有 XC8 MPLAB X 的 PIC18F45K80 我的代码中的所有内容似乎都是正确的 但我想我错了 我该如何修复它 include
  • 我可以将特定警告视为错误吗?

    以下是我有时在学生代码中看到的模式的简化版本 bool foobar int a int b if a lt b return true 当然 真正的代码要复杂得多 Visual Studio 报告警告 C4715 并非所有控制路径都会返回
  • C++ Linux GCC 应用程序中的 GUID

    我有很多服务器运行这个 Linux 应用程序 我希望他们能够生成一个碰撞概率较低的 GUID 我确信我可以从 dev urandom 中提取 128 个字节 这可能没问题 但是有没有一种简单易用的方法来生成与 Win32 更等效的 GUID
  • 为什么 .Net 框架指南建议您不要使用 ref/out 参数?

    显然 他们很 混乱 这是认真的原因吗 你还能想到其他的吗 你见过有多少开发人员并不真正理解 ref out 吗 我在真正需要的地方使用它们 但在其他地方则不然 它们通常仅在您想有效返回两个或多个值时才有用 在这种情况下它至少值得thinki
  • memccpy 返回比 src 起始地址更低的内存地址

    我有一个学校项目 我必须重新编码memccpy 功能 我使用 2 个程序来检查我的代码是否正常工作 第一个是只有一个主程序的小程序 第二个程序是另一个学生开发的 可以找到here https github com yyang42 mouli
  • Math.Sin、Math.Cos 和 Math.Tan 精度以及正确显示它们的方法

    我正在用 C 编写一个计算器 textBoxResult是一个文本框 我在其中显示数字 recount是以度为单位获取角度并以弧度为单位返回的函数 我的角度是从texBoxInput public double recount int nu
  • 为什么Windsor只能拦截虚方法或接口方法?

    我正在阅读文档 发现如果不使用接口 那么 Windsor 只能拦截虚拟方法 这是 Windsor 的限制还是 C 语言的限制 我正在寻找深入的答案 C 语言在这里完全无关 问题是拦截在运行时级别如何工作 一种技术是从类继承 实现接口并将其用
  • 如何明智地解释这个编译器警告?

    当我执行这段代码时question https stackoverflow com a 51056490 2411320 我收到这个警告 warning format d expects argument of type int but a
  • 使用 Node.js 访问用 C++ 编写的 SDK

    我有一个用 C 语言编写的 SDK 可以与我的扫描仪设备进行通信 我需要开发一个可以访问扫描仪设备的电子应用程序 我知道有很多库可用于扫描仪 但我想使用这个 SDK 因为它允许我访问设备的完整功能 而且它是由设备制造商提供的 那么 有没有什
  • 不兼容的指针到字符转换

    我正在编写一个程序 将卡片值写入 52 个点字符的多维数组中 该程序是一个测试数组 稍后我将其作为函数写入主程序中 在程序中 我通过以下方式初始化 for 循环计数0通过51 我用一个switch语句调制13将卡牌值分配给数组点 但是 我收
  • 为什么 char 数组需要 strcpy 而 char star 不需要 - 在 C 中使用结构

    我对这段代码有一个误解 typedef struct EXP int x char name char lastName 40 XMP main XMP a a name eaaa a lastName strcpy a lastName
  • 使用 QTestLib 时抑制 qDebug

    我正在向 Qt 中的项目添加单元测试 并希望使用 QTestLib 我已经设置了测试并且它们运行良好 问题是在项目中我们重写了 qDebug 以输出到我们自己的日志文件 这在运行应用程序时效果很好 问题是当我测试类时 它有时会开始记录 然后
  • 频繁插入已排序的集合

    我已经对集合 列表 进行了排序 并且我需要始终保持其排序 我目前在我的集合上使用 List BinarySearch 然后在正确的位置插入元素 我也尝试过在每次插入后对列表进行排序 但性能不可接受 有没有一种解决方案可以提供更好的性能 也许
  • 应用非限定名称查找而不是依赖于参数的名称查找

    考虑标准 sec 3 4 1 3 中的一个示例 typedef int f namespace N struct A friend void f A operator int void g A a int i f a f is the ty

随机推荐

  • 为什么这个 constexpr 代码会导致 GCC 吃掉我所有的 RAM?

    以下程序将调用fun2 MAXD 1 次 不过 最大递归深度永远不应该超过 MAXD 如果我的想法是正确的 因此 编译可能需要一些时间 但它不应该占用我的内存 include
  • 特定文件夹结构中的文件的 Azure 存储

    目前我有一些 ftp 其中有一些文件夹和文件的深层结构 它甚至可能比根文件夹低 10 级 由于我已经成功地将本地数据库迁移到 azure 数据库 我还想知道是否有任何 azure ftp 我也可以用来迁移它 我知道我们有类似 Azure 存
  • 如何在 Bootstrap 3 中使用 bootstrap-theme.css?

    从以下位置下载完整的 bootstrap 3 包后http getbootstrap com http getbootstrap com 我注意到主题有一个单独的 css 文件 如何利用它 请解释 包括我bootstrap theme cs
  • 创建一个128字节的随机数

    If the rand 函数创建一个长度为 4 字节的随机数 我想创建一个长度为 1024 位 128 字节 的随机数 这是通过连接来获得此值的最简单方法rand 函数256次还是有其他方法 include
  • Random().Next() 的流需要多长时间才会重复?

    考虑 NETRandom stream var r new Random while true r Next 重复需要多长时间 根据文档 伪随机数是从有限个数中以相等的概率选择的 一组数字 选定的数字是 不是完全随机的 因为 确定的数学算法
  • 检查 pandas 列中的连续行值

    I have hi 0 1 1 2 2 4 3 8 4 3 5 3 6 2 7 8 8 3 9 5 10 4 我有一个列表和单个整数的列表 如下所示 2 8 3 2 2 8 对于主列表中的每个项目 我想找出它第一次出现在列中的索引 因此 对
  • 使用 node.js 的 http 请求失败 发送后无法设置标头

    我尝试使用 https http 请求服务器并将结果显示在网页中 它作为服务器上的脚本工作 但由于我通过 get 请求返回结果而失败 var express require express var app express var port
  • Ember Data:在控制台中获取模型

    我有最简单的 Ember 应用程序JSBin http jsbin com aYIkAcUk 2 edit 我想做的就是找到一个模型 基于其他所以问题 https stackoverflow com questions 18756092 h
  • 跨域AJAX post调用

    我必须对位于另一台服务器上的 asp 表单进行 POST 调用 带参数 对于开发 我在同一台服务器上执行了此操作 并且运行良好 但现在我在另一台服务器上测试它 我收到的不是 200 状态 而是 0 状态 我认为这是因为它是跨域 AJAX 调
  • 如何知道三星 S8、S8+、S9 等底部导航栏何时可见?

    三星 S8 S8 S9 等上的底部导航栏在关闭时会导致 UI 和动画噩梦 导致视图从应用程序的顶部和底部移入和移出 对于这些设备 如果导航栏打开 一切都会完美运行 但如果关闭 所有动画都会低于导航栏的高度 我的想法是调整动画 但是 我很难弄
  • Paper_trail 宝石能力

    我想知道是否可以使用以下用例来实现纸迹 https github com airblade paper trail宝石 维基百科类型的应用程序 其中登录用户可以更改 编辑维基页面 其中 版主可以撤消特定更改 我知道 papertrail 允
  • 如何查看TortoiseSVN中的所有修订?

    TortoiseSVN 显示日志 选项按日期过滤修订 手动更改这些日期很麻烦 如何以最少的麻烦查看所有修订 You must在存储库的根文件夹中执行此操作 取消选中 复制 重命名时停止 Check Include merged revisi
  • 如何在android中离线获取纬度和经度?

    我想在 WiFi 和 Gps 关闭时获取当前位置 纬度和经度 可以从移动 SIM 网络获取纬度和经度 我在谷歌上搜索了更多 但没有得到满意的答案 从我昨天的经验来看question https stackoverflow com q 220
  • 简单地显示 UIInterpolatingMotionEffect 的值?

    这是一个谜题 想象一个典型的 UIInterpolatingMotionEffect UIInterpolatingMotionEffect horizontalMotionEffect UIInterpolatingMotionEffec
  • 使用 FluentValidation 的 WithMessage 方法和命名参数列表

    我正在使用 FluentValidation 并且想使用对象的某些属性值来格式化消息 问题是我对 C 中的表达式和委托的经验很少 FluentValidation 已经提供了一种使用格式参数来执行此操作的方法 RuleFor x gt x
  • Python-检查字符串是否包含数字[重复]

    这个问题在这里已经有答案了 我正在制作一个函数 它使用 while True 循环来要求用户输入通过条件的密码 长度最少为 8 15 个字符 并且至少包含一个整数 我对如何正确检查整数的输入感到困惑 我的程序 def enterNewPas
  • 如何回显$?工作?

    我正在编写一些 PowerShell 脚本来执行一些构建自动化 我发现here https stackoverflow com a 4917997 1977871 that echo 根据先前的语句返回 true 或 false 我刚刚发现
  • AWS cloudformation Template - 为模板中的堆栈提供标签

    我们希望对我们在 AWS 中创建的资源使用公司特定的标签以进行计费 我正在使用云形成模板来启动我们的 Elasticbeanstalk 实例和其他项目相关资源 当我使用 CloudFormation 控制台创建堆栈时 它会要求我在参数后面的
  • NodeJS/Express 请求实体太大 - Heroku

    我到处查看 似乎找不到对此的解释 这就是 Heroku 在我的日志中显示的内容 45 45 00 00 app web 7 Error Request Entity Too Large 45 45 00 00 app web 7 at Ob
  • GTK 3.x 是一个真正的跨平台解决方案吗?

    我已经尝试过 Qt 4 x 5 x 和 GTKmm 3 x 相比 Qt 我更喜欢 GTKmm 现在我刚刚发现 GTKmm 3 x 不提供 Windows 移植 他们也不提供 Mac 移植 基本上我除了 Linux 的库 源代码 二进制文件之