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的插件机制,可以将应用程序的一些功能打 包成独立的插件,这些插件可以在运行时动态加载和卸载,从而实现应用程序的可扩展性和灵活性 |

相关推荐
我的xiaodoujiao2 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 38--Allure 测试报告
python·学习·测试工具·pytest
好奇龙猫8 小时前
【AI学习-comfyUI学习-第三十节-第三十一节-FLUX-SD放大工作流+FLUX图生图工作流-各个部分学习】
人工智能·学习
Boilermaker19928 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
saoys8 小时前
Opencv 学习笔记:图像掩膜操作(精准提取指定区域像素)
笔记·opencv·学习
MM_MS8 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
꧁Q༒ོγ꧂9 小时前
LaTeX 语法入门指南
开发语言·latex
njsgcs9 小时前
ue python二次开发启动教程+ 导入fbx到指定文件夹
开发语言·python·unreal engine·ue
alonewolf_999 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
古城小栈9 小时前
Rust 迭代器产出的引用层数——分水岭
开发语言·rust
电子小白1239 小时前
第13期PCB layout工程师初级培训-1-EDA软件的通用设置
笔记·嵌入式硬件·学习·pcb·layout