QT框架总结

2023-10-29

一、QT介绍

1.什么是QT

        跨平台C++图形用户界面应用程序开发框架。

        《1》跨平台: 支持各种的操作系统, windows、Linux、MAC

        《2》编程语言:C++   面向对象编程    类

        《3》应用程序开发框架:图形用户界面   GUI应用程序   非GUI的应用程序

        《4》丰富的API :   有250多个以上的类,并且类有做模块的划分,代码模块化程序高!

Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些,Qt很容易扩展,并且允许真正地组件编程。

2.QT 应用:

车载系统

KTV 点歌系统

WPS

咪咕音乐

飞车游戏

播放器

安防监控系统 –海康威视    执行记录仪、行车记录仪、智能手环

医疗行业、 上位机、军工企业

二、QT的核心机制:信号与槽

1.作用

         实现对象与对象之间的通信

2.信号与槽的关联

        Connect(信号的发送者, 信号, 信号的接收者, 槽函数);

        信号的接收者收到信号执行对应的槽函数。

3.信号与槽

<1>.信号以及槽函数能否重载:    可以的

<2>.信号以及槽函数能否被继承:  可以的

<3>.信号能否传参:  可以的

信号要进行传参需要注意:

    信号的参数个数要大于等于槽函数参数的个数,并且参数类型的匹配的顺序只能是从左向右!

<4>信号如何触发:   emit 信号();

<5>信号不需要我们自己去实现

三、QT中如何配置sqlite3数据库

 

测试是否配置成功

四、图片的显示

1.静态图片显示

需要用到的类及函数:

      QPushButon 按钮    clicked()、 setText()、text()

      QLabel  显示图片    setPixmap(const QPixmap &)  setScaledContents(true)

      QPixmap    load()    scaled()

图片资源的加载步骤:

  1. 选中工程-》右键-》add new -》 Qt-》qrc
  2. Add Prefix—》/
  3. Add files---》选择图片,打开
  4. 保存
  5. 复制路径: 找到对应的图片资源,右键—》copy path

 2.动态图片的显示

需要用到的类及函数:

      QPushButton按钮:控制动图的显示与暂停    setEnabled()

      QLabel标签:去显示动图    setMovie(QMovie *movie)

      QMovie   setFileName()   start()    stop()

五、进度条的显示

需要用到的类:

     QPushButon  点击按钮,开始下载

     QProgressBar 显示下载的进度   setRange()、setValue()、value()、

     QTimer    timeout信号产生,槽函数中随机生成一个数,表示这一秒的下载的进度

六、多界面的切换

可以使用三种方法:

《1》.哪里需要哪里创建界面类的对象

   存在的问题:一个界面会被创建很多个对象

《2》.使用QT的核心机制:信号与槽函数

应用:当界面比较少的情况下使用

《3》.使用单例模式来实现界面管理

七、事件

事件(函数)

        指的是在QT的类中预先定义好的某些特定信号对应的处理函数,这些特定的。

信号一般是由外设发出,如鼠标、键盘、定时器等,这些处理函数是虚函数 ,在工程中使用时需要重写。

事件函数和槽函数的区别:

         事件函数:是QT类中提前定义好的虚函数,使用时需要重写,但不需要使用connect和信号进行关联。一旦信号发出,对应的事件函数就会被调用。

        槽函数:可以是提前定义好的(但不是虚函数,不需要重写),也可以是自定义的(不是 虚函数,不需要重写),使用时需要用connect将信号和槽关联。

1.鼠标事件

              鼠标按压事件-->mousePressEvent()

              鼠标释放事件-->mouseReleaseEvent()

              鼠标移动事件-->mouseMoveEvent()

              鼠标双击事件-->mouseDoubleClickEvent()

2.键盘事件

           键盘按压事件-->keyPressEvent()

           键盘释放事件-->keyReleaseEvent()

3.过滤事件

         过滤事件-->eventFilter

        QEvent:通用事件类  它派生出来了QKeyEvent和QMouseEvent

4.定时器事件

 QT中的定时器有两种用法:

          QTimer   timeout-->槽函数

          每一个QT工程都包含一个默认的定时器

          启动:this->startTimer(1000);

          当定时时间到时,对应的定时器事件函数就会被系统自动调用

          定时器事件--》timerEvent()

5.绘图事件

          画一条线

                     分析:1 鼠标移动-->收集移动的点值-->保存-->容器-->QList<QPoint> list;

                                2 绘图事件-->从容器中取出点值,绘制成一条线

          画多条线

                     分析:

                            1 鼠标移动-->收集移动的点值-->保存-->容器-->

                                   QVector< QVector<QPoint> >  _lines;//线集合对象

                            2 鼠标按压-->点值-->保存-->容器

                                   创建一条新线     

                            3 绘图事件-->二层循环  线-->点

         画图-->QImage

              pt.drawImage(0,0,drawing,0,0,this->width(),this->height())

              参数1:目标窗体的起始位置X坐标

              参数2:目标窗体的起始位置Y坐标

              参数3:需要绘制的源图片

              参数4:源图片的起始位置X坐标

              参数5:源图片的起始位置Y坐标

              参数6:目标窗体的宽度

              参数7:目标窗体的高度

八、QT网络编程

              QTcpSocket

              QUdpSocket

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT框架总结 的相关文章

  • Qt5和QML:如何使用WebEngine Quick Nano浏览器自动输入用户名和密码

    我正在使用编写一个小应用程序Qt and QML使用 Qt 文档中的示例WebEngine Quick Nano 浏览器 https doc snapshots qt io qt5 5 9 qtwebengine webengine qui
  • Qt 人工鼠标点击无法正常工作

    小玩具应用程序可以在这里找到 http gist github com 517445 http gist github com 517445 我正在尝试将人工鼠标事件发送到小部件 我使用QApplication sendEvent为此 接下
  • 在 Qt 服务器上验证用户身份

    我正在尝试使用 C QtTcpSocket 为个人项目 多人国际象棋游戏 实现身份验证系统 我的朋友建议了一种验证用户的方法 但我想问是否有更简单或更好的方法 来自 Python 背景 做这个项目主要是为了加深对 C 的理解 我将发布我朋友
  • 用 C++/Qt 编写的程序中的 RTF / doc / docx 文本提取

    我正在写一些程序Qt https en wikipedia org wiki Qt 28software 29 C 我需要从中读取文本微软Word https en wikipedia org wiki Microsoft Word RTF
  • QStyledItemDelegate 绘制自定义小部件失败

    在我的一个项目中 我使用的是QTableWidget为了显示一些复杂的计算结果 为了提高表格的可读性 我需要在单个表格单元格内显示两个对齐的值 后来我想通过使用颜色或箭头等来进一步自定义小部件 为此我源自QStyledItemDelegat
  • 如何让小部件在上下文菜单出现时接收鼠标释放事件

    在Ubuntu20 04上 当上下文菜单出现时 我无法让小部件接收鼠标释放事件 而Windows可以接收 我的pyqt版本是5 15 2 我考虑过手动发送鼠标释放事件 但我不知道当上下文菜单出现时哪些系统会收到鼠标释放事件 这样做可能会导致
  • 使用 CMake 编译时更改头文件位置会导致缺少 vtable 错误

    对于一个大型 C 项目 我需要从 qmake 过渡到 CMake 但是在处理一个玩具示例时 我遇到了一些我不理解的行为 示例代码具有单个头文件 当该头文件移动到子目录中时 我收到 MainWindow 类缺少 vtable 的错误 CMak
  • 如何声明一个带有成员函数指针的函数

    我有一个类 其中的成员变量指向库对象 class myClassA private libraryClass libraryObject 该库类发出事件 以字符串为特征 并提供一种机制 允许客户端类指定在发出事件时应调用的成员函数 因此在m
  • Mac OS X 上的 Qt 字体系列和样式

    我有一个基于 Qt PyQt 的 GUI 应用程序 在 Mac OS X 和其他平台 上运行 它允许用户选择字体并具有粗体和斜体选项的复选框 在更新到新的基于 Cocoa 的 Qt 时 用户发现QFontComboBox不再显示不同的字体样
  • 如何doxygen注释Qt属性?

    我想将 Doxygen 注释附加到我的 Q PROPERTY 例如 song h class Song public QObject Q OBJECT private Q PROPERTY QString title READ title
  • 覆盖 QWebView 中的页面回复

    我试图在 Qt 的 QWebView 中拦截页面 表单请求 并在某些情况下使用替代内容进行响应 QNetworkReply ngcBrowser createRequest Operation operation const QNetwor
  • 连接到 QNetworkReply::error 信号

    我正在使用 Qt5 的新连接语法 QNetworkReply 有一个名为error http qt project org doc qt 5 0 qtnetwork qnetworkreply html error 2还有一个函数叫做err
  • 如何在Android中使用QML - QWebView

    我想在 Android 中部署一个 YouTube 应用程序 但它只能在我的电脑上运行 在安卓上不起作用 它不加载任何视频 问题仅出在 QWebView 上 我使用了与此类似的代码 http doc qt io archives qt 5
  • 如何将 QFile 与 std::iostream 一起使用?

    是否可以像 std iostream 一样使用 QFile 我很确定那里一定有一个包装纸 问题是在哪里 我有另一个库 它需要 std istream 作为输入参数 但在我的程序中 此时我只有一个 QFile 我使用以下代码提出了自己的解决方
  • QFileDialog::getOpenFileName 调试时崩溃,显然是由项目名称引起的?

    我遇到了一个让我非常困惑的问题 我在 Windows 7 上使用 Qt Creator 3 1 2 和 Qt 5 3 使用 MSVC 10 0 编译器和 Windows 8 1 调试工具中的 CDB 不确定我是否应该寻找特定于 Window
  • 使用 QNetworkAccessManager 的 Qt 控制台应用程序

    我正在尝试写一个Qt调用网络服务的应用程序 这是一个控制台应用程序 url 将作为命令行参数传入 我搜索了例如http程序在Qt并找到这个链接 http qt project org doc qt 5 qnetworkaccessmanag
  • Qt:将数字转换为 QString、QVariant 或 QString::number 哪个更好

    我只是好奇 比方说 我需要在控制台中输出一个数字 代码是 include
  • 使用 C++ 访问 Azure blob 存储 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • QByteArray 到整数

    正如您可能从标题中看出的那样 我在转换QByteArray为一个整数 QByteArray buffer server gt read 8192 QByteArray q size buffer mid 0 2 int size q siz
  • QThread - 使用槽 quit() 退出线程

    我想在线程完成运行时通知对象 但是 我无法让线程正确退出 我有以下代码 处理器 cpp thread new QThread tw new ThreadWorker connect tw SIGNAL updateStatus QStrin

随机推荐

  • 阿里云服务器搭建hadoop2.7伪分布式环境

    零 写在前面 服务器 centos7 6 jdk1 8 hadoop2 7 这个其实没有什么影响 都可以参照这个教程进行搭建 一 防火墙设置 停止防火墙 systemctl stop firewalld service 禁止防火墙开机自启动
  • 外部中断0

    实验现象 下载程序后 操作 K3 按键使 D1 状态取反 接线说明 具体接线图可见开发攻略对应实验的 实验现象 章节 1 单片机 gt LED 交通灯模块 P20 gt D1 2 单片机 gt 独立按键模块 P32 gt K3 注意事项 i
  • 网桥、vlan、源目MAC地址的链路层处理

    一 链路层 在报文接收方向上 网卡驱动把接收到的数据按照其对应的链路层协议 如以太网 组装成报文 然后把它上交给链路层 接口是netif receive skb 至此网卡驱动的任务就结束了 报文交给链路层处理 在报文发送方向上 网卡驱动受链
  • 常用计算机维修方法有哪些,计算机常见硬件故障的诊断及其处理分析

    摘 要 计算机已经成为我们生活中不可缺少的一部分 但是使用过程中会遇到很多的硬件故障 导致计算机无法正常使用 这就要求我们对故障进行正确的诊断 判断问题的所在 进行处理 使计算机能够正常运转 关键词 计算机 硬件故障 诊断 处理 中图分类号
  • vue如何使用腾讯地图JavaScript API GL进行打点标记

    1 创建一个TMap js文件 export function TMap0 return new Promise function resolve reject window init function resolve window TMa
  • space quota exceeded for tablespace(表空间不足)

    space quota exceeded for tablespace 表空间不足 解决之道 方法一 测试成功 SQL gt alter user 用户 quota unlimited on 表空间名 User altered 方法二 SQ
  • 区块链七大应用场景

    一 应用场景 信息共享 这应该是区块链最简单的应用场景 就是信息互通有无 1 传统的信息共享的痛点 要么是统一由一个中心进行信息发布和分发 要么是彼此之间定时批量对账 典型的每天一次 对于有时效性要求的信息共享 难以达到实时共享 信息共享的
  • AndroidStudio apk安装失败总结

    失败 1 INSTALL FAILED DUPLICATE PERMISSION 1 1 具体信息 1 2 原因分析 1 3 解决方法 2 INSTALL FAILED USER RESTRICTED 2 1 具体信息 2 2 原因分析 3
  • USB3.2-Physical Layer---Link Initialization and Training

    这里写目录标题 Training sequences gen1 training sequence rule gen2 training sequence rule gen2 block Alignment Lane Polarity In
  • 使用for循环输出1-10之间的整数

    for i in range 1 11 print i
  • BS架构和CS架构的区别

    介绍 BS Browser Server 浏览器 服务器模式 web应用 可以实现跨平台 客户端零维护 但是个性化能力低 响应速度较慢 CS Client Server 客户端 服务器模式 桌面级应用 响应速度快 安全性强 个性化能力强 响
  • CSP 202305-1 重复局面

    题目背景 国际象棋在对局时 同一局面连续或间断出现3次或3次以上 可由任意一方提出和棋 问题描述 国际象棋每一个局面可以用大小为 8 8 的字符数组来表示 其中每一位对应棋盘上的一个格子 六种棋子王 后 车 象 马 兵分别用字母 k q r
  • 杭电ACM2005题(第几天?)------C语言

    第几天 Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s 127309 Accepted Submis
  • 职能管理,最关键的是找到衡量价值的指标

    最近一位同事过来和我讨论职能管理的经验 说实话 我是不敢妄谈经验的 自己也没有取得如何的成就 盲目的建议 会出现相反的效果 不过我们的交流还是很有收获的 因为我们发现了很多共同的认知 并且这些认知在小范围内还是得到认可的 第一 定位职能的价
  • c语言0加到10的结果,如何编写一个C语言程序,让计算机自动出四则运算计算题,要求自动出0-10之间的四则运算题,并批改结果?...

    优质解答 少年 写好了 给你参考一下 还可以更复杂 include include include define N 10 int Test int num 0 int answer 0 int result 0 int m 0 int n
  • 【状态估计】卡尔曼滤波器、扩展卡尔曼滤波器、双卡尔曼滤波器和平方根卡尔曼滤波器研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 本文包括 1 标准卡尔曼滤波器 2 扩展卡
  • 操作系统基础

    进程间的通信的几种方式 匿名管道 pipe 管道是一种半双工的通信方式 数据只能单向流动 而且只能在具有亲缘关系的进程间使用 进程的亲缘关系通常是指父子进程关系 有名管道通信 半双工的通信方式 但是它允许无亲缘关系进程间的通信 消息队列通信
  • Window根据端口号杀进程

    Window根据端口号杀进程 一 打开cmd命令窗口 输入命令 根据端口号查找对应的进程号 netstat ano 列出所有进程 例 杀死占用端口1099的进程 1 netstat ano findstr 1099 2 列出端口号为1099
  • 联合体的特点及其大小的计算

    上篇博客 笔者详细的介绍了联合的的使用方法 所以 笔者在这篇文章打算进行 联合体的特点及其大小的计算的讲述 联合体的特点 联合体的成员是共用一块内存空间的 这样一个联合体变量的大小 至少是最大的成员的大小 因为联合体至少得有能力保存最大的那
  • QT框架总结

    一 QT介绍 1 什么是QT 跨平台C 图形用户界面应用程序开发框架 1 跨平台 支持各种的操作系统 windows Linux MAC 2 编程语言 C 面向对象编程 类 3 应用程序开发框架 图形用户界面 GUI应用程序 非GUI的应用