QT问题整理

1.QT服务端的搭建流程

        步骤:创建QTcpSocket对象

                   绑定自己的IP和PROT并监听(使用listen函数)

                   建立连接:当客户端连接时socket会产生newConnection信号,槽函数里面有记录这个连接客户端的地址。

                    服务端的收发:发送:直接把内容写到socket->write()缓存区即可。接收:当客户端给缓存区写入数据时,会在服务端触发一个readyRead信号。在这个信号的槽函数里进行读取操作,socket->readALL()读取缓存区所有数据。

                    最后关闭连接。

2.QT多线程的实现方式

        (1)QThread类的run       

                   继承QThread类,重写run函数。此实现方法只有run函数内的代码是运行在子线程内。

        (2)QThread类的moveToThread

                  创建一个QThread和QWorker(继承自QObject)类对象,使用moveToThread函数移动到thread中运行,通过thread类start信号和worker槽函数绑定

3.QT的机制,信号和槽

        信号和槽主要作用是实现对象与对象之间的通信。主要通过connect函数来连接。

        信号和槽的本质是回调函数。

        connect(发送对象,发送的信号,接收的对象,槽函数);

4.窗口设置图片的方法

        样式表:样式表可以设置界面,其中背景图片设置的关键字:setStyleSheet();

        调色板:先获得Widget的调色板,然后设置调色板背景图片(setBrush),最后将调色板设置到Widget中。

        重新绘图事件:在painEvent()中,使用drawPixmap在窗口的整个矩形区域绘制图片。(当我们改变窗口大小时,会自动触发绘图事件,图片可以适应窗口大小)

        QLabel:间接方式,比如在窗口上覆盖一个QLabel,这个QLabel和窗口一样大,然后给QLabel设置背景图片,这样在视觉上与给背景设置图片的效果相同。

5.事件和信号的关系:(以点击按钮为例)

        事件是信号的底层实现。

        以点击按钮为例,当我们进行点击操作时,系统会生成一个对应的按钮点击事件,然后通过event做事件分发,执行对应的事件处理函数,在对应的事件处理函数中,我们再发射一个信号,最后通过connect绑定执行对应的槽函数,槽函数中实现需要的按钮功能。

6.信号和槽函数能否重载,参数的关系

        信号和槽函数可以拥有信号,也可以重载。

        信号的参数个数必须大于等于槽函数参数的个数,且槽函数参数从左到右与信号参数的类型严格匹配。

7.重写,重载,重定义

        重载:在同一个作用域内,多个函数功能相似,逻辑相似,参数不同(个数、类型、顺序),返回值不影响一组函数互为重载。

        重写:在继承关系中,子类重写了父类的虚函数(函数首部相同)。(实现具体功能)

        重定义:在继承关系中,子类重新定义和父类同名的函数(仅函数名相同,非虚函数)。(父类不足以实现子类的要求)

8.QT三大护法

        QApplication  控制整个程序执行的流程    .exec()

        QWidget         所有界面以及界面控件的父类

        QLayout         界面上布局的管理,控件摆放的位置。有相对布局和绝对布局两类。

9.堆栈溢出

        简单的说,堆溢出是因为malloc或new空间之后没用释放,栈溢出是使用了非法的索引。

10.内存分配的方式

内存分配有三种方式:

        从全局存储区域分配:这里的内存在程序编译阶段就会分配好,这段内存在程序运行的整个阶段都有效。比如:全局变量,static静态变量。

        从栈区分配:在执行函数的时候,函数中的局部变量的存储单元可以从栈区分配,函数执行结束后这些存储单元会被自动释放。这个操作的效率很高,但分配的内存容量有限。

        从堆中分配:这种分配方式也称为动态内存分配,在程序运行期间,使用malloc和new申请内存单元,需要程序员自己手动使用free和delete释放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值