首页 > 编程知识 正文

qt界面设计软件,Qt开发框架

时间:2023-05-06 19:30:36 阅读:185816 作者:1801

1、引文Qt在大多数人的认知中是一个建立接口的框架,只用于接口,后端往往是用别的东西实现的。 在我的实践中,用Qt实现了接口和后端的实现。

2、软件分层一般来说,我们的软件体系结构有很多种。 在这里,分为三个层次就足够了,如下图所示。

2.1 GUI层因为这里是基于Qt的,所以这一层都是在Qt的类库中实现的,所有的主界面都继承自这三个类: QWiget、QMainWindow、QDialog。 我自己习惯用QWiget,不用UI文件,所有的接口都在new上出来,用代码进行布局。

2.2 Models层model层主要实现我们软件的业务逻辑,这里的模块根据整个软件的业务逻辑合理划分模块,达到高内聚松耦合的效果。 在这里,我们将讨论关于这些业务逻辑,在那里出现了new的问题。 我的方法是创建一个bridge类,然后用这个bridge类实例化所有的业务逻辑类。

2.3如果是communication层的话,就是实现数据的收集。 通信方式多种多样,有串行端口、网络端口、CAN端口等。 在此层接收的数据被发送到models层,用户的输入也通过此层发送到驱动器。

那么,这一层的类是在那里实例化的吗? 我也同样决定选bridge类。 这样,bridge类其实是没有任何业务功能的类。 只是提供了可以在各级之间相互连接的载体。

3、下层与GUI层的交流至此,我们除了GUI层之外的类(通信和模块)都可以在bridge类通过信号槽机制进行交流了。 那么,我们的模型如何与GUI通信?

可以在这个bridge类中完成。 其他类已在bridge类中实例化,因此可以在此类中包含对类的引用。 您可以将指向bridge类的指针传递到q构件的构造函数。 这将允许所有类与GUI进行通信。

4、运行架构设计所有级别的代码,在该类中知道该级别将实现后,使用线程使整个软件愉快地运行。 这就是我们想说的运营架构。

一般来说,所有communication的类都是单独的一个线程。 这样可以在不阻塞GUI线程的情况下快速响应信息收集和控制信息向下级计算机的传递。

所以communication这个层一般有几个端口就有几个线程。 当然,一些轻量级的东西可以组合成一个线程。

bridge类已到达GUI线程。 为什么要做这种事呢? 当我们的界面弹出时,界面会显示从模型到获取的最新值。 (可以通过信号槽进行安装,但会变得复杂。 )因此,要调用get的方法,最好将所有模型放入一个线程中,使其成为——-GUI线程。

这样,我们的小信息收集和控制系统的大型机就构建起来了。

最后,我想强调的是,使用线程时建议使用movetothread方法。 如果不使用此方法,则所有实例都必须由线程的run )函数new,以确保此类的插槽函数在此线程的消息吉鲁组中执行。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。