Qt 面试题复习10~12_2024-12-2

Qt 面试题

28、Qt 如果一个信号的处理方法一直未被执行有哪些可能性

|----------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1、信号和槽未正确连接 2、信号从未被发射 3、对象已销毁 4、线程问题,发送信号的对象和接收槽的对象位于不同的线程中,跨线程的信号 传递需要额外的处理 5、、连接类型问题,选择不合适的连接类型可能会导致槽函数不能按预期执行 6、应用程序事件循环未启动(没有调用QApplication::exec()) |

29、Qt 三大核心机制

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 信号与槽 信号:事件发生时被调用的函数 槽:响应信号的函数 connect(信号发出者, 信号, 信号接收者, 槽, 连接方式(隐藏默认自动连接))//五个参数 元对象系统 元对象系统分为三大类: QObjiect类、 Q_OBJECT宏和元对象编译器moc QObject类:提供了访问元对象信息的方法,如获取类名、信号和槽列表 Q_OBJEC宏:在类声明中使用O_OBJECT宏,使该类具备元对象系统的功能 moc工具:Qt的元对象编译器(Meta-Object Compiler),负责生成必要的元对象代码 事件系统 事件的创建 鼠标事件,键盘事件,窗口调整事件,模拟事件 事件的交付 |

30、虚函数表

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 多态是由虚函数实现的,而虚函数主要是通过虚函数表实现的。如果一个类中包含 虚函数,那么这个类就会包含一张虚函数表,虚函数表存储的每一项是一个虚函数 的地址。该类的每个对象都会包含一个虚指针(虚指针存在于对象实例地址的最前 面,保证虚函数表有最高的性能),虚指针指向虚函数表。 注意:对象不包含虚函数表,只有虚指针,类才包含虚函数表,派生类会生成一个 兼容基类的虚函数表。 |

31、什么是Qt事件循环 ?

|----------------------------------------------------------------------------------------------------------------|
| Qt事件循环是一种程序架构,它用于处理窗口系统和其他用户界面事件,以及与用户界面无关的事件例如定时 器和网络事件。 Qt事件循环以循环的方式运行,每次循环都会检査是否有新的事件,如果有就会调用相应的处 理程序来处理它们。 |

32、纯虚函数和普通的虚函数有什么区别

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1、普通虚函数可以在基类中给出默认实现,而纯虚函数仅是一个接口声明,不包含具体的实现。 2、含有普通虚函数的类可以直接创建实例;而含有纯虚函数的类(即抽象类)不能直接实例化,只能作为其他 类的基础。 3、如果你希望定义一个接口让子类去实现,那么应该使用纯虚函数;如果想要提供一个默认的行为同时允许 子类进行扩展或修改,那么普通的虚函数将是更好的选择 |

33、Qt 的样式表是什么?

|----------------------------------------------------------------------------------------------------------------------------------------------|
| 样式表是Qt中用于定制界面风格的一种机制。样式表使用CSS语法,可以定义界面元素的属性、颜色、字体 等。Qt中的样式表可以应用于整个应用程序或特定的控件,使得应用程序的界面可以与众不同。Qt还提供了 QStyle类和QStyleFactory类,用于管理系统默认样式和自定义样式。 |

34、描述Qt的TCP通讯流程

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 服务端(QTcpServer) 1、创建TcpServer对象 2、使用listen()方法将服务器绑定到本地地址和端口 3、当有新的客户端连接成功发送newConnect信号 4、在newConnection信号槽函数中,调用nextPendingConnection函数获取新连接QTcpSocket对象 5、连接QTcpSocket对象的readyRead()信号 6、在readRead信号的槽函数使用readAll()接收数据 7、使用write()方法向客户端发送数据 客户端(QTcpSocket) 1、创建QTcpSocket 对象 2、使用connectToHost()方法连接到服务器的地址和端口 3、检查连接状态 4、connected信号的槽函数开启发送数据 5、使用write()发送数据,readAll()接收数据 |

35、自定义控件流程

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1、 定义类: 创建头文件和源文件,定义自定义控件类 2、重写方法:根据需求重写虚函数,如 paintEvent、mousePressEvent 等 3、使用控件:在主窗口或其他地方实例化并使用自定义控件 4、编译和运行:确保项目配置正确,并编译运行以测试自定义控件 5、调试和优化:调试和优化自定义控件,确保其稳定性和性能 |

36、什么是Qt的插件机制 ?

|------------------------------------------------------------------------------------------------|
| Qt的插件机制是一种将应用程序的功能模块化的方法。通过使用Qt的插件机制,可以将应用程序的一些功能打 包成独立的插件,这些插件可以在运行时动态加载和卸载,从而实现应用程序的可扩展性和灵活性 |

相关推荐
CC__xy16 分钟前
04 类型别名type + 检测数据类型(typeof+instanceof) + 空安全+剩余和展开(运算符 ...)简单类型和复杂类型 + 模块化
开发语言·javascript·harmonyos·鸿蒙
萤丰信息27 分钟前
技术赋能安全:智慧工地构建城市建设新防线
java·大数据·开发语言·人工智能·智慧城市·智慧工地
小张的博客之旅34 分钟前
宁波市第八届网络安全大赛初赛(REVERSE-Writeup)
学习·网络安全·reverse
Pocker_Spades_A1 小时前
飞算JavaAI家庭记账系统:从收支记录到财务分析的全流程管理方案
java·开发语言
墨雨听阁2 小时前
8.18网络编程——基于UDP的TFTP文件传输客户端
网络·网络协议·学习·udp
小晶晶京京2 小时前
day35-负载均衡
运维·网络·网络协议·学习·负载均衡
CHEN5_022 小时前
【Java基础常见辨析】重载与重写,深拷贝与浅拷贝,抽象类与普通类
java·开发语言
Despacito0o2 小时前
C语言基础:变量与进制详解
java·c语言·开发语言
nightunderblackcat3 小时前
进阶向:人物关系三元组,解锁人物关系网络的钥匙
开发语言·python·开源·php
科大饭桶4 小时前
C++入门自学Day11-- String, Vector, List 复习
c语言·开发语言·数据结构·c++·容器