C++/Qt 面试B卷

题目一:Qt自定义一个信号槽,触发这个信号,Qt多个信号如何关联一并处理;

第一种方法:

在发送信号时,也发送一个int类型数字,或者说标志,这样在槽函数触发是可以知道是哪个信号发出的;

第二种方法:

在槽函数内有获取发送信号的函数,通过sender()函数获取发送信号;https://blog.csdn.net/qq_45662588/article/details/117700606

题目二:Qt如果一个信号的处理方法一直未被执行有哪些可能性;

断开了,连接的时候失败了,多线程的时候在排队或者启动锁死了。

题目三:在Qt5的信号处理中如何使用lambda机制(可以代码示例);

信号定义了,但是不写对应槽函数,直接将函数写到槽的位置。

 connect(musicPlayer,SIGNAL(positionChanged(qint64)),this,SLOT(slotReflushStartTime(qint64)));
 connect(musicPlayer,SIGNAL(positionChanged(qint64)),slotReflushStartTime(qint64));

直接就是将对象都不写了,直接写个函数。

题目四:在Qt5中如何发送一个post请求并接收返回值数据;

题目五:Qt中的多线程,如何在创建子线程时传递参数,子线程在执行的过程中如何向其他线程传递执行结果;

我们继承了QThread,重写run函数,但是run函数是不能带参数的,所以我们只能在继承的类中定义一个私有变量,写一个成员函数,然后将变量传入到成员函数,然后再在重写的run函数内调用这个成员函数,通过调用start开启线程即可;

在类中用一个信号和槽直接发就行;

 题目六:段错误一般是什么原因造成的,如何快速排查;

一般是指针的问题,出现野指针空指针;点灯或者用Debug去排查问题。

 题目七:

第一个:在关闭界面时会异常退出,由于是在栈区创建之后会自己释放,所以程序结束时后创建先释放,所以这里是widget后创建先释放,导致label还没释放但是承载他的widget已经连带着自己和label释放了,但是label还做了内存管理,内存管理不会去判断是否已经释放了,就会出现自己再释放一次的问题;所以解决方法就是将widget先创建。

第二个:A::printf();

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值