Qt 每日面试题 -2

news2024/9/22 18:21:13

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

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

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

信号定义了,但是不写对应槽函数,直接将函数写到槽的位置。
connect(musicPlayer,SIGNAL(positionChanged(qint64)),this,SLOT(slotReflushStartTime(qint64));
connect(musicPlayer,SIGNAL(positionchanged(qint64)),slotReflushStartTime(qint64));直接就是将对象都不写了,直接写个函数。

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

一般是指针的问题,出现野指针 空指针
排查: 打断点或者用Debug去排查问题

14、题目

#include<QApplication>
#include<QLabel>
#include<QWidget>
int main(int argc, char* argv0)
{
    QApplication hwApp(argc, argv);
    QLabel hwLabel("Hello world");
    QWidget window;
    hwLabel.setParent(&window);
    window.show();
    return hwApp.exec();
}

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

15、Qt三大核心机制

  1. 信号槽
    connect(信号发出者,信号,信号接收者,槽,连接方式(隐藏默认自动连接));
  2. 元对象系统分为三大类:QObject类Q_OBJECT宏元对象编译器moc
  • Qt的类包含Q_OBJECT宏 moc编译器会对该类编译成标准的C++代码

  1. 事件模型
  • 1 事件的创建
    鼠标事件,键盘事件,窗口调整事件,模拟事件

  • 2 事件的交付
    Qt通过调用显函数QObject::event()来交付事件

  • 3 事件循环模型

    • 主事件循环通过调用QCoreApplication::exec()启动
    • 随着QCoreApplication::exit()结束
    • 本地的事件循环可用利用QEventLoop构建。
    • 一般来说,事件是由触发当前的窗口系统产生的,但也可以通过使用QCoreApplication::sendEvent()和QCoreApplication::postEvent()来手工产生事件。需要说明的是QCoreApplication::sendEvent()会立即发送事件,QCoreApplication::postEvent()则会将事件放在事件队列中分发。
  • 4自定义事件

16、Qt对象树

QT提供了对象树机制,能够自动、有效的组织和管理继承自QObject的对象
每个继承自QObject类的对象通过它的对象链表(QObjectList)来管理子类对象,当用户创建一个子对象时,其对象链表相应更新子类对象的信息对象链表可通过children()获取

当父类对象析构的时候,其对象链表中的所有(子类)对象也会被析构,父对象会自动,将其从父对象列表中删除,QT保证没有对象会被delete两次。开发中手动回收资源时建议使用deleteLater代替delete,因为deleteLater多次是安全的。

17、信号槽的四种写法和五种连接方式?

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

  • 信号和槽的四种写法∶

    • 1.用宏
      connect(this,SIGNAL(clicked()),this,SLOT(colse()));//连接方式(隐藏默认自动连接).

    • 2.用函数指针
      connect(this,&mainwindow::my_signal,this,&mainwindow::my_slot);

    • 3.用重载函数指针
      QOverloadconnect(this,QOverload<参数>::of(&mainwindow::my_signal),this,QOverload<参数>::of(&mainwindow::my_slot));

    • 4.lambda表达式(匿名函数)匿名函数代替槽
      connect( this,&mainwindow::my_signal,this,[=]{qDebug()<<100;});

  • 信号与槽五种连接方式:

    • 1 自动连接 (默认连接方式)
    • 2 直接连接 (用于单线程,自动匹配)
    • 3 队列连接 (用于多线程也可用于单线程,自动匹配)
    • 4 阻塞队列 (跨线程,多线程)
    • 5 唯一连接 (跨线程,多线程)

18、Qt模型

Qt中的View主要有三种:

QListView , QTreeView , QTabelView

对应的Model:

QStringListModel , QAbstractltemModel , QstandardltemModel。

19、Qt中的MVD(MVC)了解吧?

Qt的MVD包含三个部分Model(模型),View(视图),代理( Delegate ) 。

  • Model 负责保存数据
  • View 负责展示数据
  • Delegate 负责ltem样式绘制或处理输入

这三部分通过信号槽来进行通信,当Model中数据发生变化时将会发送信号到View,在View中编辑数据时,Delegate负责将编辑状态发送给Model层。 这三部分基类分别为QAbstractltemModel、QAbstractltemView、QAbstractltemDelegate。

Qt中提供了默认实现的MVD类,如QTableWidget、QListWidget、QTreeWidget等。

20、Qt如果要进行UDP网络编程首先需要添加哪些内容?

  1. .pro文件中添加QT +=network

  2. 在头文件中包含相关头文件
    #include <QHostInfo>
    #include <QNetworkInterface>

  3. QT的UdpSocket接收消息使用原则
    第一步 : new—个UdpSocket
    第二步 : 调用UdpSocket的bind方法同时指定端口号
    第三步 : 使用connect将接收消息函数和UdpSocket对象做关联
    第四步 : 在接受消息槽函数当中调用readDatagram接收消息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2155625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【HTTPS】对称加密和非对称加密

HTTPS 是什么 HTTPS 是在 HTTP 的基础上&#xff0c;引入了一个加密层&#xff08;SSL&#xff09;。HTTP 是明文传输的&#xff08;不安全&#xff09; 当下所见到的大部分网站都是 HTTPS 的&#xff0c;这都是拜“运营商劫持”所赐 运营商劫持 下载⼀个“天天动听“&…

剖析枚举类型的使用与优点

枚举类型顾名思义——就是把所有的值一一列举出来 列如星期 把每一项都列举出来就是枚举 这些可能取值都是有值的&#xff0c;默认从0开始&#xff0c;依次递增1&#xff0c;当然在声明枚举类型的时候也可以赋初值&#xff0c; 要是在某一项赋初值之后&#xff0c;后面的就会…

客户转化预测以及关键因素识别_支持向量机与相关性分析

数据入口&#xff1a;数字营销转化数据集 - Heywhale.com 数据集记录了客户与数字营销活动的互动情况。它涵盖了人口统计数据、营销特定指标、客户参与度指标以及历史购买数据&#xff0c;为数字营销领域的预测建模和分析提供了丰富的信息。 数据说明&#xff1a; 字段说明Cu…

JavaEE: 创造无限连接——网络编程中的套接字

文章目录 Socket套接字TCP和UDP的区别有连接/无连接可靠传输/不可靠传输面向字节流/面向数据报全双工/半双工 UDP/TCP api的使用UDPDatagramSocketDatagramPacketInetSocketAddress练习 TCPServerSocketSocket练习 Socket套接字 Socket是计算机网络中的一种通信机制&#xff0…

Clion使用vcpkg管理C/C++包

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Clion安装vcpkg二、使用步骤1.切换到清单模式2.开始安装包 三、测试代码总结 前言 Linux上的库基本都可以通过apt或yum等包管理工具来在线安装包&#xff…

cgroup基本原理与使用

Linux cgroups是Linux内核中的一项强大功能&#xff0c;允许用户对进程进行**资源限制、优先级控制、监控和隔离。它主要用于管理和控制计算资源的分配&#xff0c;特别是在容器技术&#xff08;如 Docker 和 LXC&#xff09;中得到了广泛应用。 1. Cgroups的基本概念和原理 …

Qwen-2.5 + ClaudeDev + Aider:这套免费的AI编程工具链,简直太棒了!

Qwen-2.5 ClaudeDev Aider&#xff1a;这套免费的AI编程工具链&#xff0c;简直太棒了&#xff01; 原创 Aitrainee AI进修生 &#x1f379; Insight Daily &#x1faba; Aitrainee | 公众号&#xff1a;AI进修生 Hi&#xff0c;这里是Aitrainee&#xff0c;欢迎阅读本…

AI字幕翻译器行业分析:前五大厂商占有大约29.5%的市场份额

AI 字幕翻译器正在彻底改变我们使用不同语言消费媒体的方式&#xff0c;使内容可以普遍访问。这些先进的技术利用机器学习和自然语言处理&#xff0c;将口语对话实时翻译成字幕。这一功能不仅打破了语言障碍&#xff0c;提升了观众的体验&#xff0c;而且还使内容创作者能够毫不…

比 Kimi 更强!用 Claude 仿写头条文章,轻松过原创(附完整指令)

最近&#xff0c;我有个做头条号的朋友跟我吐槽&#xff0c;说每天都要更新内容&#xff0c;经常写文章写到半夜&#xff0c;他已经快撑不住了。我听完实在有点不忍心&#xff0c;就告诉他&#xff0c;其实可以用 AI 来帮忙写头条文章。 朋友一脸怀疑&#xff0c;说“怎么可能&…

消灭病毒gamedemo

DestoryVirus 一、AudioSourceManager using System.Collections; using System.Collections.Generic; using UnityEngine;public class AudioSourceManager : MonoBehaviour {public static AudioSourceManager Instance { get; private set; }public SoundPlayer soundPla…

【C++】智能指针模拟实现及详解

目录 什么是智能指针&#xff1a; 为什么要有智能指针&#xff1a; auto_ptr: unique_ptr&#xff1a; shared_ptr&#xff1a; shared_ptr的缺陷&#xff1a; weak_ptr: 什么是智能指针&#xff1a; 概念&#xff1a; 智能指针是一种特殊的类模板&#xff0c;用于自动…

Java律师法律咨询小程序

技术&#xff1a;Java、Springboot、mybatis、Vue、Mysql、微信小程序 1.代码干净整洁&#xff0c;可以快速二次开发和添加新功能 2.亮点可以添加AI法律咨询作为 创新点 系统分&#xff1a;用户小程序端&#xff0c;律师web端和管理员端 用户可以在小程序端登录系统进入首…

机器学习之非监督学习(二)异常检测(基于高斯概率密度)

机器学习之非监督学习&#xff08;二&#xff09;异常检测&#xff08;基于高斯概率密度&#xff09; 0. 文章传送1.案例引入2.高斯正态分布3.异常检测算法4.异常检测 vs 监督学习5.算法优化 0. 文章传送 机器学习之监督学习&#xff08;一&#xff09;线性回归、多项式回归、…

VMware安装CentOS7及其初始化配置教程

安装准备 VMware Workstation Pro 17&#xff1a;下载及安装教程 CentOS 7下载地址&#xff1a;centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云 创建虚拟机 安装CentOS7 鼠标点一下屏幕中间&#xff0c;就可以进入虚拟机&#xff0c;按向上箭头选择安装&#xff0…

EECS498 Deep Learning for Computer Vision (一)软件使用指南

#最近开始学习深度学习的相关基础知识&#xff0c;记录一下相关笔记及学习成果# learning&#xff1a;building artificial systems that learn from data and experience deep learning(a set of machine learning): hierarchical learning algorithms with many "laye…

【基础算法总结】模拟篇

目录 一&#xff0c;算法介绍二&#xff0c;算法原理和代码实现1576.替换所有的问号495.提莫攻击6.Z字形变换38.外观数列1419.数青蛙 三&#xff0c;算法总结 一&#xff0c;算法介绍 模拟算法本质就是"依葫芦画瓢"&#xff0c;就是在题目中已经告诉了我们该如何操作…

helm安装promethues

1、添加 Helm 仓库&#xff1a; helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update 2、安装 Prometheus&#xff1a;安装promtheus到monitor名称空间中 kubectl create ns monitor helm search repo prometheus #查…

【WSL迁移】将WSL2迁移到D盘

首先查看WSL状态&#xff1a;wsl -l -v 以压缩包的形式导出到其他盘。 wsl --export Ubuntu D:\Ubuntu_WSL\ubuntu.tar 注销原有的linux系统 wsl --unregister Ubuntu 导入系统到D盘 wsl --import Ubuntu D:\Ubuntu_WSL D:\Ubuntu_WSL\Ubuntu.tar 恢复默认用户 Ubuntu co…

Python编码系列—Python策略模式:灵活应对变化的算法策略

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

后端-navicat查找语句(单表与多表)

表格字段设置如图 语句&#xff1a; 1.输出 1.输出name和age列 SELECT name,age from student 1.2.全部输出 select * from student 2.where子语句 1.运算符&#xff1a; 等于 >大于 >大于等于 <小于 <小于等于 ! <>不等于 select * from stude…