程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

Qt大厂面试题(c++大厂面试)

balukai 2025-03-14 14:58:05 文章精选 3 ℃

1.Qt自定义一个信号槽,触发这个信号, Qt多个信号如何关联一并处理

第一种方法:

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

第二种方法:

在槽函数内有获取发送信号的函数,通过sender()函数获取发送信号;

2.Qt如果一个信号的处理方法一直未被执 行有哪些可能性

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

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

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

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

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

4.段错误一般是什么原因造成的,如何快速 排查;

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

5.如图


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

第二个:A::printf();

6.Qt 三大核心机制

信号槽

信号槽的五种连接方式(图略)

connect(信号发出者,信号,信号接收者,槽,连接方式(隐藏默认自动连接))//五个参数

元对象系统

元对象系统分为三大类:QObject类、Q_OBJECT宏和元对象编译器moc

Qt的类包含Q_OBJECT宏 moc编译器会对该类编译成标准的C++代码

事件模型

事件的创建

鼠标事件,键盘事件,窗口调整事件,模拟事件

事件的交付 Qt通过调用虚函数QObject::event()来交付事件。

事件循环模型

主事件循环通过调用QCoreApplication::exec()启动, 随着QCoreApplication::exit()结束, 本地的事件循环可以利用QEventLoop构建。

一般来说,事件是由触发当前的窗口系统产生的,但也可以通过使用
QCoreApplication::sendEvent()和
QCoreApplication::postEvent()来手工产生事件。需要说明的是
QCoreApplication::sendEvent()会立即 发送事件,
QCoreApplication::postEvent()则会将事件放在事件队列中分发。

自定义事件


Qt开发学习路线

Qt资料领取(视频教程+文档+代码+项目实战)

Tags:

最近发表
标签列表