Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
User interface 开发一个类似Qt/GTK的框架_User Interface_Qt_Frameworks_Gtk - Fatal编程技术网

User interface 开发一个类似Qt/GTK的框架

User interface 开发一个类似Qt/GTK的框架,user-interface,qt,frameworks,gtk,User Interface,Qt,Frameworks,Gtk,我现在有了一个开始开发类似于Qt/GTK+的框架的想法,但在开始创建这个项目之前,我想知道一些事情: GTK+和Qt的结构是什么? 我是否需要开发一个窗口管理器来构建自己的框架? 一些资源可以开始吗? 开发GUI/应用程序框架是一项重大任务。您可能希望非常清楚为什么需要编写另一个框架 你提到的两个项目都是开源的。为什么不从那里开始呢 GTK:git克隆git://git.gnome.org/gtk+ Qt:git克隆git://gitorious.org/qt/qt.git Ed如果您问GTK和

我现在有了一个开始开发类似于Qt/GTK+的框架的想法,但在开始创建这个项目之前,我想知道一些事情:

GTK+和Qt的结构是什么? 我是否需要开发一个窗口管理器来构建自己的框架? 一些资源可以开始吗?
开发GUI/应用程序框架是一项重大任务。您可能希望非常清楚为什么需要编写另一个框架

你提到的两个项目都是开源的。为什么不从那里开始呢

GTK:git克隆git://git.gnome.org/gtk+ Qt:git克隆git://gitorious.org/qt/qt.git
Ed如果您问GTK和Qt的结构是什么,是否需要编写自己的寡妇管理器,请回答:否,以及如何开始。源代码中至少有前两个问题的答案。别忘了,任何领域的伟大实践者都是通过观察他人来学习的。阅读代码也不例外

开发GUI/应用程序框架是一项重大任务。您可能希望非常清楚为什么需要编写另一个框架

你提到的两个项目都是开源的。为什么不从那里开始呢

GTK:git克隆git://git.gnome.org/gtk+ Qt:git克隆git://gitorious.org/qt/qt.git
Ed如果您问GTK和Qt的结构是什么,是否需要编写自己的寡妇管理器,请回答:否,以及如何开始。源代码中至少有前两个问题的答案。别忘了,任何领域的伟大实践者都是通过观察他人来学习的。阅读代码也不例外

这听起来像是一项重大任务,至少作为一个启动项目

不确定你所说的GTK+的结构是什么意思。您可以看到GTK+的示例,它至少告诉您实现的对象GTK+是如何相互关联的面向对象API。您可以根据这些信息猜测代码的结构


不,您不需要编写自己的窗口管理器;工具包主要关注窗口内部发生的事情,而不是窗口管理本身。当然,你可以决定你的平台应该有一个更广泛的范围,包括一个WM。

这听起来像是一个重大的任务,至少作为一个启动项目

不确定你所说的GTK+的结构是什么意思。您可以看到GTK+的示例,它至少告诉您实现的对象GTK+是如何相互关联的面向对象API。您可以根据这些信息猜测代码的结构


不,您不需要编写自己的窗口管理器;工具包主要关注窗口内部发生的事情,而不是窗口管理本身。当然,你可以决定你的平台应该有一个更大的范围,包括一个WM。

编写一个GUI/app框架将是一个很好的学习体验,但即使是一个相当小的app框架也将是一个非常大的工作,在你相当擅长使用其他几个框架和小部件工具包编写应用程序之前,你不应该真正解决这个问题

在这十年的早期,我曾经做过类似的事情。那是在我为Mac电脑编程超过15年,Windows超过10年,并直接编程到他们的原生图形、事件和小部件API,以及各种面向对象的工具包(包括PowerPlant、MFC和MacApp)之后。当我开始开发PalmOS应用程序时,我花了几周时间编写了一个非常小的应用程序框架,该框架以PowerPlant为模型。但是,如果没有几十年来对这么多GUI系统的广泛而深入的经验,我根本不可能成功

在Linux/X11上实现这一点需要做更多的工作。这是因为,与Mac OS和Windows不同,X11和Linux都不提供内置的用户界面小部件,也不提供图形原语或文本布局功能。GTK+是GNOME生态系统的一部分;它提供小部件,从GObject获取消息队列和内部通信,依靠GDK抽象和简化与X11的图形和事件通信,并使用Pango和Cairo进行文本呈现和布局。我在整个系统中工作,它可能代表了许多非常聪明的人几十年的辛勤工作。我确信Qt非常相似

因此,如果你真的想这样做,我建议你:

在多个操作系统上编写具有许多不同应用程序和小部件工具包的程序。这不仅可以帮助您了解这些系统是如何工作的,而且还可以帮助您了解为什么它们被设计成这样。它会让你感觉到什么效果好,什么效果差。 为一个或多个开源框架提供bug修复或新功能。GTK+有一个新的功能。另一个伟大的开源框架是。 成为专家级C/C++程序员。
当你完成这项工作几年后,你将拥有适合处理自己框架的专业知识。

编写GUI/应用程序框架将是一个很好的学习经验 但是,即使是一个相当小的应用程序框架也将是一个非常大的工作,除非你相当擅长使用其他几个框架和小部件工具包编写应用程序,否则你不应该真正解决这个问题

在这十年的早期,我曾经做过类似的事情。那是在我为Mac电脑编程超过15年,Windows超过10年,并直接编程到他们的原生图形、事件和小部件API,以及各种面向对象的工具包(包括PowerPlant、MFC和MacApp)之后。当我开始开发PalmOS应用程序时,我花了几周时间编写了一个非常小的应用程序框架,该框架以PowerPlant为模型。但是,如果没有几十年来对这么多GUI系统的广泛而深入的经验,我根本不可能成功

在Linux/X11上实现这一点需要做更多的工作。这是因为,与Mac OS和Windows不同,X11和Linux都不提供内置的用户界面小部件,也不提供图形原语或文本布局功能。GTK+是GNOME生态系统的一部分;它提供小部件,从GObject获取消息队列和内部通信,依靠GDK抽象和简化与X11的图形和事件通信,并使用Pango和Cairo进行文本呈现和布局。我在整个系统中工作,它可能代表了许多非常聪明的人几十年的辛勤工作。我确信Qt非常相似

因此,如果你真的想这样做,我建议你:

在多个操作系统上编写具有许多不同应用程序和小部件工具包的程序。这不仅可以帮助您了解这些系统是如何工作的,而且还可以帮助您了解为什么它们被设计成这样。它会让你感觉到什么效果好,什么效果差。 为一个或多个开源框架提供bug修复或新功能。GTK+有一个新的功能。另一个伟大的开源框架是。 成为专家级C/C++程序员。
当您完成这项工作几年后,您将拥有适合处理您自己的框架的专业知识。

我认为这里的一些答案可能有点夸张。显然,制作与Qt和Gtk质量、宽度和深度相同的产品是一个巨大的挑战。但是你可以制作更简单的东西,并且仍然可以学到很多关于它是如何工作的。我建议像在大学里那样做。将OpenGL与Glut结合使用。然后您就已经有了基本的绘图功能和事件系统。然后需要为按钮、文本字段等创建类

如果您想让它变得非常简单,那么每个组件只需要知道它是在哪里绘制的,并且有一些边界框,在那里您可以检查鼠标单击是否在里面。您还需要创建一些系统,使按钮、复选框等能够告诉代码的其余部分它们已被单击

这并不是这里的火箭科学人所说的那样。多年来,游戏制作了自己的非常简单的GUI工具包。你也可以尝试这种方法。我以前曾在游戏引擎上建模过一个简单的GUI工具包。您的按钮和文本字段可能只是精灵


但是是的,如果你想做一些能与Gtk+和Qt竞争的东西,那就忘了它吧。这是团队多年来的努力。

我认为这里的一些答案可能有点夸张。显然,制作与Qt和Gtk质量、宽度和深度相同的产品是一个巨大的挑战。但是你可以制作更简单的东西,并且仍然可以学到很多关于它是如何工作的。我建议像在大学里那样做。将OpenGL与Glut结合使用。然后您就已经有了基本的绘图功能和事件系统。然后需要为按钮、文本字段等创建类

如果您想让它变得非常简单,那么每个组件只需要知道它是在哪里绘制的,并且有一些边界框,在那里您可以检查鼠标单击是否在里面。您还需要创建一些系统,使按钮、复选框等能够告诉代码的其余部分它们已被单击

这并不是这里的火箭科学人所说的那样。多年来,游戏制作了自己的非常简单的GUI工具包。你也可以尝试这种方法。我以前曾在游戏引擎上建模过一个简单的GUI工具包。您的按钮和文本字段可能只是精灵


但是是的,如果你想做一些能与Gtk+和Qt竞争的东西,那就忘了它吧。这是团队多年来的努力。

首先,我想开发另一个框架来学习更多内容并进行实践,其次,我没有从Git获得GTK和Qt的源代码,因为我想从头开始。谢谢。嗯,谢谢,但是你可以删除你的评论并用这个内容编辑你的答案吗?谢谢。首先,我想开发另一个框架来学习和实践,第二,我没有从Git获得GTK和Qt的源代码,因为我想从头开始。谢谢,谢谢,但是你可以删除你的通讯 nt并使用此内容编辑您的答案?谢谢