Qt基础面试题

Qt基础面试题

1:QT信号槽机制的优缺点 :

1)QT信号槽机制的引用精简了程序员的代码量 (不用写回调函数)
2)QT的信号可以对应多个槽(但他们的调用顺序随机),也可以多个槽映射一个信号 
3)QT的信号槽的建立和解除绑定十分自由 
4)信号槽同真正的回调函数比起来时间的耗损还是很大的,所有在嵌入式实时系统中应当慎用 
5)信号槽的参数限定很多例如不能携带模板类参数,不能出现宏定义等等

2、多线程情况下, Qt中的信号槽分别在什么线程中执行, 如何控制?

可以通过connect函数的第五个参数来控制, 信号槽执行时所在的线程

1)自动连接(AutoConnection),默认的连接方式,如果信号与槽,也就是发送者与接受者在同一线程,等同于直接连接;如果发送者与接受者处在不同线程,等同于队列连接。
2)直接连接(DirectConnection),当信号发射时,槽函数立即直接调用。无论槽函数所属对象在哪个线程,槽函数总在发送者所在线程执行,即槽函数和信号发送者在同一线程
3)队列连接(QueuedConnection),当控制权回到接受者所在线程的事件循环时,槽函数被调用。槽函数在接受者所在线程执行,即槽函数与信号接受者在同一线程

3、描述QT中的文件流(QTextStream)和数据流(QDataStream)的区别, 他们都能帮助我们完成一些什么事情.

QTextStream – 文本流, 操作轻量级数据(int, double, QString), 数据写入文件中之后以文本的方式呈现。 
QDataStream – 数据流, 通过数据流可以操作各种数据类型, 包括类对象, 存储到文件中数据可以还原到内存。 
QTextStream, QDataStream可以操作磁盘文件, 也可以操作内存数据, 通过流对象可以将数据打包到内存, 进行数据的传输.

4、描述Qt下Tcp通信的整个流程

具体解释 :https://www.cnblogs.com/yuweifeng/p/9382841.html

QT如果要进行网络编程首先需要在.pro中添加如下代码:QT += network

服务器端: 
1. 创建用于监听的套接字 
2. 给套接字设置监听 
3. 如果有连接到来, 监听的套接字会发出信号newConnected 
4. 接收连接, 通过nextPendingConnection()函数, 返回一个QTcpSocket类型的套接字对象(用于通信) 
5. 使用用于通信的套接字对象通信 
1>. 发送数据: write 
2>. 接收数据: readAll/read 
客户端: 
1. 创建用于通信的套接字 
2. 连接服务器: connectToHost 
3. 连接成功与服务器通信 
1>. 发送数据: write 
2>. 接收数据: readAll/read

6、描述QT下udp通信的整个流程

QT下udp通信服务器端和客户端的关系是对等的, 做的处理也是一样的. 
1. 创建套接字对象 
2. 如果需要接收数据, 必须绑定端口 
3. 发送数据: writeDatagram 
4. 接收数据: readDatagram

7: 描述QT下多线程的两种使用方法, 以及注意事项

第一种方法: 
1. 创建一个类从QThread类派生 
2. 在子线程类中重写 run 函数, 将处理操作写入该函数中 
3. 在主线程中创建子线程对象, 启动子线程, 调用start()函数 
第二种方法: 
1. 将业务处理抽象成一个业务类, 在该类中创建一个业务处理函数 
2. 在主线程中创建一QThread类对象 
3. 在主线程中创建一个业务类对象 
4. 将业务类对象移动到子线程中 
5. 在主线程中启动子线程 
6. 通过信号槽的方式, 执行业务类中的业务处理函数 
多线程使用注意事项: 
* 1. 业务对象, 构造的时候不能指定父对象 
* 2. 子线程中不能处理ui窗口(ui相关的类) 
* 3. 子线程中只能处理一些数据相关的操作, 不能涉及窗口

原文地址:https://www.cnblogs.com/xiaokang01/p/12562704.html

时间: 2024-08-08 10:33:13

Qt基础面试题的相关文章

基于C/S架构的3D对战网络游戏C++框架 _03客户端详细设计与OpenGL、Qt基础

本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): 1.实现基本通信框架,包括对游戏的需求分析.设计及开发环境和通信框架的搭建: 2.实现网络底层操作,包括创建线程池.序列化网络包等: 3.实战演练,实现类似于CS反恐精英的3D对战网络游戏: 技术要点:C++面向对象思想.网络编程.Qt界面开发.Qt控件知识.Boost智能指针.STL算法.STL.

C/C++基础笔试题1.1.1(运算符十问)

本文似乎都是问题,意在引起思考,回忆,主题是运算符,另外这些问题是没有特别的逻辑上的关系,只是我想到的就问了,虽然是随便问,但是你能不能随便答呢?. 运算符,我们在每一个程序中都会用到,也是最最基础的基本功,本系列C/C++基础笔试题等,是没有纲要,没有规律的一系列博文. 为什么这样子,因为作者是渣阿,他只能学一点说一点,力求通俗阿,傻瓜但不失主线阿. 1.0写的是字节对齐,没看过有兴趣的朋友可以戳这里.1.1写的是与运算符相关的内容,你最"熟悉"的"朋友". 首先

C/C++基础笔试题1.0(字节对齐)

传说中博文标题带有笔试.面试等点击率都会很高呢?我也试试! 众生皆是码农命,我们这种即将战秋招的渣渣,既没有超凡的能力,也没有流弊的项目,怎么破? 唯独苦苦怒刷基础,笔试题,面试题,因为以前常常刷OJ,所以很多面试题的编程题倒是可以解,但是笔试题或者基础题我就不记得了,唯独慢慢回想. 况且,写这种面试题,谁能写得赢JULY神. 今天首先讲得是字节对齐. 注意:我是一个渣,所以我只能按自己的理解来说了(要不然怎么会这么惨呢?).如果你想看大神的解释,请看这里 来看个题目 #include <ios

Java基础机试题

package day8;import java.util.Scanner;/** * Java基础机试题 * @author:lyrand * */public class convert {        static void exitContinue(){                while (true){            System.out.print("你想继续吗?(y/n)");            Scanner sc = new Scanner(Sys

Java基础面试题集(一)

Java基础面试题 一.面向对象编程(OOP) 7 二.常见的Java问题 7 2.1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? 7 2.2.JDK和JRE的区别是什么? 8 2.4.是否可以在static环境中访问非static变量? 8 2.5.Java支持的数据类型有哪些?什么是自动拆装箱? 8 2.6.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思? 8 2.7.Java中,什么是构造函数?什么是构造函数重载?什么是

iOS一些基础面试题

Part One 别人问你你都感觉这尼玛说啥的基础面试题 1.UIWindow和UIView和 CALayer 的联系和区别? 答:UIView是视图的基类,UIViewController是视图控制器的基类,UIResponder是表示一个可以在屏幕上响应触摸事件的对象: UIwindow是UIView的子类,UIWindow的主要作用:一是提供一个区域来显示UIView,二是将事件(event)的分发给UIView,一个应用基本上只有一个UIWindow. 万物归根,UIView和CALay

PHP基础面试题(原创)

PHP基础面试题(原创) 1.PHP有哪些输出方式?各自的区别? echo,是PHP的一个关键字,输出字符串,如果是数组,则输出Aarray var_dump(),用于输出变量的详细信息,一般用于调试 print(),格式化输出字符串 print_r(),打印变量信息 2.在UTF8编码下,PHP $str=‘面试题目’,substr($str,0,6) 和 JS str=‘面试题目’,str.substr(0,6)分别输出的是什么? 前者输出‘面试’,后者输出‘面试题目’,说明PHP subs

2015 IOS iOS基础面试题(一)——在蓝懿教育

iOS如何面试 iOS基础面试题(二) iOS基础面试题(三) iOS基础面试题(四) iOS进阶面试题----Block部分 iOS进阶面试题----多线程部分 iOS进阶面试题----经典10道 iOS面试悲剧的应对方法 随着iOS平台开发的职位的增加,笔试.面试也越来越有“套路”,这里我总结了一些面试题,多数是Objective-C的基础知识,适合于面试新人,答案是我自己答的,不准确的地方,欢迎指出. 1.   Object-c的类可以多重继承么?可以实现多个接口么?Category是什么

iOS开发-基础面试题(一) 分类: 面试题

iOS开发-基础面试题(一) 1.Difference between shallow copy and deep copy??浅复制和深复制的区别?? 答:浅层复制:只复制指向对象的指针,而不复制引用对象本身.?深层复制:复制引用对象本身.?意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源?还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们