zoukankan      html  css  js  c++  java
  • 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. 子线程中只能处理一些数据相关的操作, 不能涉及窗口

  • 相关阅读:
    部署asp.net网站若干记录
    部署asp.net网站容易忽视的问题
    我的wp记录WordPress3.0导航菜单图文使用教程
    问题org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet jsp threw exception
    spring + hibernate 配置
    FlexPaper二次开发简单收尾
    C++集成设计环境——Code::Blocks安装过程
    onlineDoc修改
    问题java.net.ConnectException: connection failed: socket,host=localhost,port=8100,tcpNoDelay=1
    解决java web项目导入后出现的问题 cannot be read or is not a valid ZIP file
  • 原文地址:https://www.cnblogs.com/xiaokang01/p/12562704.html
Copyright © 2011-2022 走看看