QT

QT MVC开发模式

一、简单介绍 今天我来记录一下在Qt中使用MVC模式进行开发的过程。MVC(Model-View-Controller)是一种常见的软件架构模式,用于将应用程序的逻辑和用户界面分离开来。在Qt中,使用MVC模式可以大大提高应用程序的可维护性和可扩展性。通过将应用程序的逻辑和用户界面分离开来,可以更轻 ......
模式 MVC QT

Qt音视频开发38-ffmpeg视频暂停录制的设计

一、前言 基本上各种播放器提供的录制视频接口,都是只有开始录制和结束录制两个,当然一般用的最多的也是这两个接口,但是实际使用过程中,还有一种可能需要中途暂停录制,暂停以后再次继续录制,将中间部分视频不需要录制,跳过这部分不需要的视频,而且录制的视频文件必须是能够正常播放的连续的。vlc和mpv都只提 ......
ffmpeg 视频 38

Qt5.15.0 升级至 Qt5.15.9 遇到的一些错误

按照之前我写的文章教程,可以很简单的编译出静态库(仅供学习交流) 编译 windows 上的 qt 静态库 编译出静态库后,替换旧版本的库,见我另一篇文章教程 VS2019 配置 QT 库 之所以没有直接上 Qt6.0 以上的版本,是因为 Qt6.0 对比 Qt5 删减了不少东西(我之前已经测试过了 ......
Qt5 错误 Qt 15.0 15

【Qt】ubuntu18.04 qtcreator点击图标打不开,缺少GLIBC_2.28

遇到的问题是点击qtcreator的图标打不开,像其他qt相关的软件可以 然后从安装目录下../Tools/QtCreator/bin运行./qtcreator出现报错: ./qtcreator: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.2 ......
图标 qtcreator ubuntu 18.04 GLIBC

Qt 连接 mysql 报错 QSqlDatabase: MYSQL driver not loaded

参考: https://blog.csdn.net/o___GRoot/article/details/111320313 https://blog.csdn.net/sksukai/article/details/105344308 我的解决步骤: 1. 指定qmake qmake: could ......
QSqlDatabase driver loaded MYSQL mysql

Qt5.9 UI设计(七)——统一样式设计

前言 前面已经将UI设计部分实现,各页面也做了最简单的设计,本章介绍一下qss样式的使用。样式设计最终的显示效果如下图: 操作步骤 将stylesheet.qss 样式文件添加进工程 stylesheet.qss 内容如下: /********************** MainWindow St ......
样式 Qt5 Qt

Qt5.9 UI设计(六)——TitleBar功能实现

前言 上一章介绍了ControlTreeWidget 与ControlTabWidget联动的功能,这一章我们将实现自定义 TitleBar 的功能 操作步骤 修改按键图标最大和最小值 右键按键图标,转到对应的槽函数中去 对应的槽函数的实现如下: void MainTitleBar::on_push ......
TitleBar 功能 Qt5 Qt

Qt5.9 UI设计(三)——添加UI、类及资源文件

前言 设计一个软件,最简单的方式就是把控件直接往UI上放,然后再把功能实现了。这样可以实现基本的功能,但是界面不能缩放,如果拖动软件改变界面的大小,界面上的控件就会乱成一团,或者是界面的控件压根就不会跟着界面的大小进行改变。 要使界面上的所有控件都随着界面的变化而变化,做到自适应,这就需要使用到界面 ......
文件 资源 Qt5 Qt

Qt5.9 UI设计(四)——布局设计及自定义界面

前言 前面我们已经创建了mainwindow ControlTabWidget ControlTreeWidget maintitlebar 4个UI几面,我们需要将其他三个UI放置到mainwindow显示,同时需要它们可以自适应的界面的大小缩放。这里会使用到水平布局和垂直布局方法。 (一)主界面 ......
布局 界面 Qt5 Qt

Qt5.9 UI设计(五)——将Tabwidget与treeWidget相互关联

前言 前面一章介绍了ControlTabWidget ControlTreeWidget maintitlebar 三个子页面同时布局到 mainwindow 的方法,本章介绍如何将ControlTreeWidget 与ControlTabWidget 联动。 (一)TabWidget子页面实现 在 ......
treeWidget Tabwidget Qt5 Qt

Qt5.9 UI设计(二)——最简Qt工程搭建

前言 前面一章已经介绍了QT的开发环境的安装,这里介绍一下一个最简工程的搭建 操作步骤 新建项目 选择带界面的Qt Widgets Application 设置项目位置 注意这里的目录不能有中文路径 我这里设置的是:D:\QT\Qt_demo 选择编译工具,我们这里只安装了MinGW,所以只有一个选 ......
工程 Qt5 Qt

Qt5.9 UI设计(一)——在win10系统上安装Qt5.9

##安装环境 win10 系统 Qt5.9.0 版本 官方下载地址 可以从官方网站获取:https://www.qt.io/zh-cn/ 现在的安装包跟以前的有些区别,加上网络比较慢,我这里演示的是Qt5.9.0 版本的安装 安装步骤 直接双击qt-opensource-windows-x86-5. ......
Qt5 系统 Qt win 10

Qt程序CPU过高怎么定位解决?Qt程序性能优化

自己开发的一个程序采用多线程调用url从网络上下载股票数据,一旦开启程序就特别的卡;想着优化一下;授之于鱼,不如 授之以渔; 1.CPU过高排查方法 (1)打开vs的性能探测器; (2)勾选CPU,然后点击开始按钮 (3)运行一段时间后,点击停止,分析一会会出现下面的CPU使用报告 (4)根据这个报 ......
程序 性能 CPU

从零编译 Qt 源码

写在前头 为了保证流程可复现,本文档展示的编译全过程在 Windows 10 提供的沙盒中进行。 Linux 安装 Qt 想必都不会有什么问题,所以本文讲的其实是 Windows 上如何从零编译 Qt 源码。此处的 Qt 源码指的是 Qt 这个第三库本身,所以想找怎么编译自己写的 Qt 项目的可以到 ......
源码 Qt

QT中使用QtCipherSqlitePlugin

1.下载QtCipherSqlitePluginhttps://github.com/devbean/QtCipherSqlitePlugin2.利用QT Creator编译QtCipherSqlitePlugin应用QT Creator打开QtCipherSqlitePlugin.pro,然后利用 ......
QtCipherSqlitePlugin

Qt 编程中 namespace Ui { class Widget; } 解析

文章目录 本博文的简述or解决问题? 理解一: 1、新建Qt 设计师界面类 dialog.h dialog.cpp ui_dialog.h 2、分析代码 3、Ui 创建两种不同的方式 4、pImpl的原理 理解二: Qt 编程中 namespace Ui { class Widget; } 解析 用 ......
namespace Widget class Qt Ui

ubuntu安装qt

apt命令安装 (下文建立在读者有一定linux命令使用经验和qt使用经验的基础) 在此之前进行了比较多的安装方式,包括官网下载,发现太慢转为了清华镜像源下载,两种安装方式得到的包都是一样的,最后还是进行了apt命令安装,这样会更简单方便。 sudo apt install qtcreator 安装 ......
ubuntu

QT 计算两个日期时间差?(时间转时间戳)

时间戳时间转换工具 时间换算工具 1、得出的结果单位是:天(不足一天为0,没有半天的说法) QDateTime time1 = QDateTime::fromString("2022-4-25 16:40:02", "yyyy-MM-dd HH:mm:ss"); QDateTime time2 = ......
时间 时间差 两个 日期 QT

Qt之QTableWidget的使用

#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QtWidgets> #include <QDebug> #include <QJsonArray> #include <QJsonObject> #include <QJsonValue> #i ......
QTableWidget

Qt音视频开发37-识别鼠标按下像素坐标

一、前言 在和视频交互过程中,用户一般需要在显示视频的通道上点击对应的区域,弹出对应的操作按钮,将当前点击的区域或者绘制的多边形区域坐标或者坐标点集合,发送出去,通知其他设备进行处理。比如识别到很多人脸,用户单击某个人脸后指定对该人脸进行详细的信息查询等;再比如圈出某个区域发给人工智能处理设备,对指 ......
坐标 像素 鼠标 37

QT多个按钮信号绑定同一个槽函数,执行不同业务逻辑

界面如果包含多个按钮,每个按钮都创建一个槽函数,这样会这代码看起来比较冗杂,我们可以让多个按钮共用一个槽函数,然后去执行不同的功能。 一、ObjectName 通过setObjectName()在定义button处先设置ObjectName,后在槽函数中判断按钮的名称。然后根据按钮的名称从而实现不同 ......
函数 按钮 逻辑 信号 多个

Qt——.pro文件及详细说明

使用过QT框架进行项目开发的小伙伴,也许都知道.pro文件, 但文件里面的具体配置方式可能比较模糊。本文将详细说明文件里各配置项的含义,并对其编写方法进行归纳总结,以便各位读者可以在未来的项目开发中快速而准确地编写.pro文件。 1.配置项详细说明 注释:注释是从一行的#开始,到这一行的结束。 QT ......
文件 pro

Qt编写推流综合应用示例-文件推流

一、功能特点 1.1 文件推流 指定网卡和监听端口,接收网络请求推送音视频等各种文件。 实时统计显示每个文件对应的访问数量、总访问数量、不同IP地址访问数量。 可指定多种模式,0-直接播放、1-下载播放。 实时打印显示各种收发请求和应答数据。 每个文件对应MD5加密的唯一标识符,用于请求地址后缀区分 ......
示例 文件

Qt for Android QtQuick应用程序 USB连接手机调试运行错误:adb: failed to *.apk: No such file or directory

1.场景 Windows11、Qt6.5.0QtQuick应用程序USB连接手机调试运行。 2.错误信息 adb: failed to *.apk: No such file or directoryInstalling to device failed!进程"C:\Users\Administra ......

Qt 数据的进制转换:二进制、十进制和十六进制

将一个整数转换为不同进制的字符串,可以使用QString的函数setNum()或静态函数number(),函数原型为: 1 QString &setNum(int n,int base=10) 2 QString number(int n,int base=10) 其中n是待转换的整数,base是使 ......

Qt 16进制和10进制之间的转换

一、16转换为10进制。1、数字转换为字符串 1 quint8 Hex = 0x0F; 2 QString num = QString("%1").arg(Hex,0,10); 3 //QString num = QString::number(Hex,10); 2、数字转换为数字 1 quint8 ......
进制 之间 Qt

Qt音视频开发36-超时检测和自动重连的设计

一、前言 如果网络环境正常设备正常,视频监控系统一般都是按照正常运行下去,不会出现什么问题,但是实际情况会很不同,奇奇怪怪七七八八的问题都会出现,就比如网络出了问题都有很多情况(交换机故障、网线故障、带宽故障等),所以监控系统在运行过程中,还得做超时检测,超过规定的时间没有收到数据则认为掉线了,需要 ......
36

qt事件循环

不知道说啥直接上图, 希望几个月之后我还能看得懂. 原图在这儿 ......
事件

Qt-FFmpeg开发-实现录屏功能(10)

> 1. 抓取桌面图像转码后保存到本地视频文件中; > 2. 支持各种常见视频文件类型; > 3. 支持Windows、Linux录屏功能; > 4. 支持全屏录制功能、录制指定区域功能; > 4. 默认将录制视频保存到系统的... ......
Qt-FFmpeg 功能 FFmpeg Qt

Qt-FFmpeg开发-保存视频流裸流(11)

> 1. ffmpeg音视频库【软解码】实现的视频播放器; > 2. 支持打开本地视频文件(如mp4、mov、avi等)、网络视频流(rtsp、rtmp、http等); > 3. 支持视频匀速播放; ... ......
视频流 Qt-FFmpeg FFmpeg 视频 Qt