题目一: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();