为什么qt可以在没有x服务器和gtk的情况下运行

为什么qt可以在没有x服务器和gtk的情况下运行,qt,gtk,x11,gstreamer,Qt,Gtk,X11,Gstreamer,我正在运行arago linux的AM335x初学者工具包上开发一个基于gstreamer的应用程序。gst launchwith a test pipeline提供正确的命令行串行输出,但在屏幕上不显示任何内容。顺便说一句,屏幕默认显示一个qt演示应用程序。关闭此演示应用程序会导致gst启动失败 我编译了一个hello world gtk应用程序,它给出gtk警告**:无法打开显示:错误。顺便说一句,这里没有X 但当我运行Qt hello world应用程序时,演示应用程序顶部显示了一个弹出窗

我正在运行arago linux的AM335x初学者工具包上开发一个基于gstreamer的应用程序。gst launchwith a test pipeline提供正确的命令行串行输出,但在屏幕上不显示任何内容。顺便说一句,屏幕默认显示一个qt演示应用程序。关闭此演示应用程序会导致gst启动失败

我编译了一个hello world gtk应用程序,它给出gtk警告**:无法打开显示:错误。顺便说一句,这里没有X

但当我运行Qt hello world应用程序时,演示应用程序顶部显示了一个弹出窗口

有人能解释一下原因吗。欢迎提出任何解决此问题的建议

更新1: 如果我错了,请纠正我。我在想也许使用qt-gstreamerapi是最简单的方法

更新2: 我可以使用fbdevsink gstreamer插件来完成这项工作。
谢谢大家的指点

这听起来很奇怪

GTK+依赖GDK来满足其绘图和输入需求,GDK为不同的平台和环境使用不同的后端

X11后端是一个,但还有其他后端


您只需确保使用适合您的环境的后端构建GDK。

这听起来很奇怪

GTK+依赖GDK来满足其绘图和输入需求,GDK为不同的平台和环境使用不同的后端

X11后端是一个,但还有其他后端


您只需确保使用适合您的环境的后端构建GDK。

我对GTK没有经验,但我的理解是,GTK本身就是一个图形工具包。这正是需要图形后端才能工作的部分。还有其他不需要的东西,它们都是油嘴滑舌的

Qt是一个更通用的工具包,它内置了很多特性,如果您有GTKGUI,您可以使用其他库来实现这些特性。使用Qt,您可以构建不需要图形后端的应用程序,但必须从QCoreApplication类创建应用程序对象实例。如果您有一个使用QApplication的Qt应用程序,并且您尝试在没有图形后端的情况下运行它,那么您也会遇到错误

原因是实用性和保持简单,也许还有一个次优的设计,这使得从图形后端分离一些东西很困难。很多事情实际上都依赖于拥有图形后端,在没有图形后端的情况下添加特殊情况可以被视为额外的复杂性==工作和bug,几乎没有什么好处


至于你问题的第二部分,我不知道GTK的解决方法,除了,如果你实际上不想画任何东西,就不要使用它。但我认为,一般来说,您需要提供一个虚拟图形后端,它可以满足需求,而不需要实际的屏幕。

我对GTK没有经验,但我的理解是,GTK本身就是一个图形工具包。这正是需要图形后端才能工作的部分。还有其他不需要的东西,它们都是油嘴滑舌的

Qt是一个更通用的工具包,它内置了很多特性,如果您有GTKGUI,您可以使用其他库来实现这些特性。使用Qt,您可以构建不需要图形后端的应用程序,但必须从QCoreApplication类创建应用程序对象实例。如果您有一个使用QApplication的Qt应用程序,并且您尝试在没有图形后端的情况下运行它,那么您也会遇到错误

原因是实用性和保持简单,也许还有一个次优的设计,这使得从图形后端分离一些东西很困难。很多事情实际上都依赖于拥有图形后端,在没有图形后端的情况下添加特殊情况可以被视为额外的复杂性==工作和bug,几乎没有什么好处


至于你问题的第二部分,我不知道GTK的解决方法,除了,如果你实际上不想画任何东西,就不要使用它。但我认为,一般来说,您需要提供一个虚拟图形后端,它可以满足要求,而不需要实际的屏幕。

至少有以下方法可以实现非X提供的gtk应用程序:

GTK帧缓冲区gtkfb 您可以找到有关它的更多信息:

完全不要使用图形功能
这有点激烈,因此您需要坚持使用glib等工具。

至少有以下方法可以实现非X提供的gtk应用程序:

GTK帧缓冲区gtkfb 您可以找到有关它的更多信息:

完全不要使用图形功能
这有点激烈,因此您需要坚持使用glib等工具。

GTK+需要一个工作窗口系统,即X11、Windows、MacOS X或Wayland,以便显示内容和处理事件

GTK+的旧版本允许使用Linux帧缓冲设备或DirectFB作为窗口系统,
但这两个后端都已弃用,或者在较新版本的GTK+库中被删除,或者未维护且可能已损坏。

GTK+需要一个工作窗口系统,即X11、Windows、MacOS X或Wayland,以便显示内容和处理事件

较旧版本的GTK+允许使用Linux帧缓冲设备或DirectFB作为窗口系统,但两个后端都已被弃用,或者在较新版本的GTK+库中被删除,或者未维护且可能已损坏