Qt中 gui 模块和 widgets 模块的区别

1. gui 模块提供了基本的图形系统抽象层,包括QPaintDevice、QPainter等类,这些类构成了Qt的绘图基础。

2. widgets 模块在 gui 模块的基础上,提供了完整的桌面级用户界面控件,如按钮、列表、滑块等。这些控件继承自更基础的图形类。

3. gui 模块是更底层的图形功能,widgets模块依赖于gui模块,提供了高级控件实现。

4. 如果只需要基本的GUI编程功能,可以只使用gui模块。如果要开发完整的桌面程序,需要同时使用gui和widgets。

5. gui模块包含的类提供绘图功能,但没有事件、布局等高级功能。widgets模块在gui之上扩展了这些高级特性。

6. gui模块编译产生的库文件体积更小,用于不需要GUI控件的应用,如服务端程序。

总结来说,gui模块提供基础绘图和渲染功能,widgets模块在此基础上实现完整的桌面控件层。两者可以分开使用,但widgets依赖gui。这个分层设计让Qt的图形系统更加灵活可扩展。

2依赖于gui的qt程序可以在无界面的终端系统centos上跑吗?

        如果Qt程序依赖gui模块,但没有使用widgets模块的代码,是可以在无界面的终端环境如CentOS上运行的。

        关键的是该Qt程序不能使用任何QWidget及其子类的GUI控件代码,这些控件都依赖于底层的窗口系统支持。但使用gui模块提供的核心绘图类是可以的,如QPainter、QPixmap、QIcon等。这些类不依赖窗口系统,可以在无界面环境下使用,实现一些基本的图片处理、图形输出等功能。所以如果程序只使用gui模块的纯绘图功能,不涉及任何窗口、控件的创建和显示,就可以在终端环境下运行。但这需要程序从设计上就考虑到无界面环境,不依赖窗口和控件,只基于核心绘图类实现所需功能。如果已经使用了窗口、界面控件,要想在无界面环境运行,就需要进行较大改造,把界面相关代码全部剥离出去。

总之,Qt gui独立使用可以在无界面环境下运行,但依赖widgets的界面代码就需要窗口系统支持。要考虑无界面环境,必须从一开始就设计避免使用窗口和控件。 

你可能感兴趣的:(qt,c++)