当前位置: 首页 > news >正文

Qt 调试系统输出报警声以及添加资源

文章目录

  • 前言
  • 一、方法1 使用 Qsound
    • 1.添加都文件 直接报错
    • 2.解决这个错误 添加 QT += multimedia
    • 3. 加入代码又遇到新的错误
    • 小结
  • 二、第二种方法
    • 1.引入库
    • 2.添加资源
      • 2.1依次点击Qt--->Qt Resource File--->Choose
      • 2.2给资源文件起个名字,如:res,在点击下一步
      • 2.3 下次需要添加资源
    • 3.添加资源无法播放问题
      • 3.1遇到问题:用下面语句无论怎么更换地址都没法播放声音
      • 3.2解决问题
    • 4.添加资源路径技巧
  • 三、 QPixmap 没问题,opencv imread 读取有问题
    • 1. opencv imread在Qt 读取图片问题
    • 2.读取图片小结
  • 总结


前言

遇到一个需求,使用Qt输出报警声,于是试一试能调用的方法。

一、方法1 使用 Qsound

1.添加都文件 直接报错

#include
直接添加头文件
结果马上报错

在这里插入图片描述

2.解决这个错误 添加 QT += multimedia

QT += multimedia

问题解决

3. 加入代码又遇到新的错误

#include "widget.h"#include <QApplication>
#include <QSound>
//#include <QCoreApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;// 播放系统默认的报警声音
//      QSound sound("alert"); // 系统默认警告声
//      sound.play();// 播放 Windows 的默认报警声音QSound sound("SystemExclamation"); // 系统警告声sound.play();w.show();return a.exec();
}

在这里插入图片描述

小结

竟然不能用,应该是找不到文件路径,之类的,时间比较赶,就先搞另外一种方法,有空再来测试

二、第二种方法

调用MP3,播放

1.引入库

代码如下(示例):

#include "widget.h"
#include <QApplication>
#include <QSound>
#include <QMediaPlayer>
#include <QAudioOutput>
int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;// 创建 QMediaPlayer 实例QMediaPlayer *player = new QMediaPlayer;// 设置要播放的 MP3 文件路径player->setMedia(QUrl::fromLocalFile("E:/QTcode/liugang/baojing/baojing/shengyin.mp3"));// 开始播放player->play();       w.show();return a.exec();
}

2.添加资源

2.1依次点击Qt—>Qt Resource File—>Choose

在这里插入图片描述

2.2给资源文件起个名字,如:res,在点击下一步

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.3 下次需要添加资源

在这里插入图片描述

3.添加资源无法播放问题

3.1遇到问题:用下面语句无论怎么更换地址都没法播放声音

player->setMedia(QUrl::fromLocalFile("qrc:/mp3/shengyin.mp3"));  //://shengyin.mp3

怀疑是资源添加有问题:有折腾了一下,先显示一张图片

在Qt中,您可以使用`QLabel`和`QPixmap`来读取并显示一张图片。以下是一个简单的例子,展示了如何使用这些类来显示一张图片:1. **包含必要的头文件**:```cpp
#include <QApplication>
#include <QLabel>
#include <QPixmap>
  1. 读取并显示图片
int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建一个QLabel对象QLabel *label = new QLabel;// 创建一个QPixmap对象并加载图片QPixmap pixmap("path/to/your/image.jpg");// 将图片设置为QLabel的背景label->setPixmap(pixmap);// 显示QLabellabel->show();return app.exec();
}

结果显示图片没问题

3.2解决问题

将读取MP3文件的函数修改一下

将这句修改: player->setMedia(QUrl::fromLocalFile(“qrc:/mp3/shengyin.mp3”)); //😕/shengyin.mp3

修改成:player->setMedia(QUrl(“qrc:/mp3/shengyin.mp3”)); //😕/shengyin.mp3

#include "widget.h"
#include "ui_widget.h"
#include <QMediaPlayer>
#include <QLabel>
#include <QPixmap>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 创建 QMediaPlayer 实例QMediaPlayer *player = new QMediaPlayer;//player->setMedia(QUrl::fromLocalFile("D:/QTcode/gou/baojing/baojing/baojing/shengyin.mp3"));//player->setMedia(QUrl::fromLocalFile("qrc:/mp3/shengyin.mp3"));  //://shengyin.mp3player->setMedia(QUrl("qrc:/mp3/shengyin.mp3"));  //://shengyin.mp3// 开始播放player->play();// 创建一个QLabel对象QLabel *label = new QLabel;// 创建一个QPixmap对象并加载图片QPixmap pixmap(":/mp3/moban.jpg");  //://mp3/moban.jpg// 将图片设置为QLabel的背景label->setPixmap(pixmap);// 显示QLabellabel->show();
}Widget::~Widget()
{delete ui;
}

4.添加资源路径技巧

在这里插入图片描述

三、 QPixmap 没问题,opencv imread 读取有问题

// 创建一个QLabel对象
QLabel *label = new QLabel;// 创建一个QPixmap对象并加载图片
QPixmap pixmap(":/moban/moban.jpg");  //://mp3/moban.jpg// 将图片设置为QLabel的背景
label->setPixmap(pixmap);// 显示QLabel
label->show();
//://moban/moban.jpgtempl = imread("D:/QTcode/gou/gouPiPeiMain/gouPiPeiMain/moban/moban.jpg");//模板

改成

templ = imread(":/moban/moban.jpg");//模板

在这里插入图片描述

1. opencv imread在Qt 读取图片问题

在Qt 中使用Imread读取图片,相对路径是行不通的,会报错,估计是编码的时候没法正确读取路径,试了很多都不行,
同样的路径用Qt自带的QPixmap pixmap(“:/moban/moban.jpg”);就没有问题imread

相对路径
相对路径的好处是,图片在项目目录下,拷贝的时候跟着拷贝。再次编译的时候不会丢失。
**最常用的方法是把图片拷贝到项目的根目录下面,和cpp文件放在同一个目录,**直接访问。

Image = imread("01.JPG");

或者在根目录下,新建一个文件夹,如:pictures。把图片拷贝到pictures文件夹下面。

Image = imread("pictures//01.JPG");//可以
Image = imread("pictures\\01.JPG");//可以
Image = imread("pictures/01.JPG");//可以

这三种方式,都是可以的。
而单右斜线形式是不可以的。

srcImage = imread("pictures\01.JPG");//不可以

绝对路径
也可以使用绝对路径,和相对路径类似的。

Image = imread("D://Project test//Project1//pictures//01.JPG");//可以
Image = imread("D:\\Project test\\Project1\\pictures\\01.JPG");//可以
Image = imread("D:/Project test/Project1/pictures/01.JPG");//可以

这三种方式,都是可以的。
而单右斜线形式是不可以的。

Image = imread("D:\Project test\Project1\pictures\01.JPG");//不可以

2.读取图片小结

  1. Qt自带的用相对路径,绝对路径都没问题
  2. Qt里面用Imread 只能读取绝对路径,或者先用Qt自带的读取成pixmap、Qimage格式在转换成Mat格式

总结

继续加油

相关文章:

Qt 调试系统输出报警声以及添加资源

文章目录 前言一、方法1 使用 Qsound1.添加都文件 直接报错2.解决这个错误 添加 QT multimedia3. 加入代码又遇到新的错误小结 二、第二种方法1.引入库2.添加资源2.1依次点击Qt--->Qt Resource File--->Choose2.2给资源文件起个名字&#xff0c;如&#xff1a;res&#…...

Linux下文件的创建写入读取编程

在linux下操作一个文件&#xff0c;首先要保证文件的存在&#xff08;不存在就创建&#xff09;&#xff0c;接着打开文件&#xff08;打开成功&#xff09;并得到文件描述符&#xff0c;接着在进行读写操作&#xff0c;最后还需要关闭文件。如果我们对文件进行读写之后不关闭文…...

python 解析

list(pd.DataFrame) # 所有列名切片&#xff1a;print("显式 切片:\n", df.loc[:, "number":"sum"]) 所有行&#xff0c;列是从number 到sum &#xff0c;前闭后开print("隐式 切片:\n", df.iloc[:, 1:3]) # 结果和上面一样转化成字典…...

谷歌aab包在Android 14闪退而apk没问题(targetsdk 34)

问题原因 Unity应用(target SDK 34)上线到GooglePlay&#xff0c;有用户反馈fold5设备上&#xff08;Android14系统&#xff09;疯狂闪退&#xff0c;经测试&#xff0c;在小米手机Android14系统的版本复现成功了&#xff0c;奇怪的是apk直接安装没问题&#xff0c;而打包成aa…...

34.在排序数组中查找元素的第一个和最后一个位置

34.在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为…...

js树过滤

// 递归过滤得到每一项的hidden为false的数据 function filterTree(arr) { return arr.filter(item > { if (item.children) { item.children filterTree(item.children) } if (!item.hidden) { return true } }) }...

Java多线程并发篇----第十六篇

系列文章目录 文章目录 系列文章目录前言一、线程等待(wait)二、线程睡眠(sleep)三、线程让步(yield)四、线程中断(interrupt)五、Join 等待其他线程终止前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这…...

测评结果:免费的“文心一言3.5”香,但是付费的产品质量更高

文章目录 前言一、文心一言3.5生成的图片和文章1.文心一言生成的图片在文心一言3.5中输入以下内容&#xff1a;我的测评结果&#xff1a; 2.文心一言生成的文章在文心一言3.5中输入以下内容&#xff1a;我的测评结果&#xff1a; 二、ChatGPT生成的图片和文章1.ChatGPT4.0 生成…...

Matlab GUI设计基础范例(可以一步一步跟着做)

我们要做一个GUI界面&#xff0c;可以选择peaks、membrane和sinc三种三维图数据&#xff0c;选择画出surf、mesh和contour三种图像。 打开GUI 每个版本打开方式可能都不一样&#xff0c;但有一个是相同的&#xff0c;就是在命令行输入guide回车。 绘制控件 大概就绘制成这样…...

@Transactional(rollbackFor = {Exception.class})与 @Transactional区别

在Spring框架中&#xff0c;Transactional 注解用于标记方法或类&#xff0c;以表明该方法或类内包含的数据库操作应当在一个事务中执行。事务的基本原则是“原子性”&#xff0c;即所有操作要么全部成功&#xff0c;要么全部失败。 1. Transactional&#xff08;不指定 rollb…...

数据结构——二叉树(先序、中序、后序及层次四种遍历(C语言版))超详细~ (✧∇✧) Q_Q

目录 二叉树的定义&#xff1a; *特殊的二叉树&#xff1a; 二叉树的性质&#xff1a; 二叉树的声明&#xff1a; 二叉树的先序遍历&#xff1a; 二叉树的中序遍历&#xff1a; 二叉树的后序遍历&#xff1a; 二叉树的层序遍历&#xff1a; 二叉树的节点个数&#xff1a; 二叉…...

如何快速打造属于自己的接口自动化测试框架

1 接口测试 接口测试是对系统或组件之间的接口进行测试&#xff0c;主要是校验数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及相互逻辑依赖关系。 接口自动化相对于UI自动化来说&#xff0c;属于更底层的测试&#xff0c;这样带来的好处就是测试收益更大&#xff…...

人工智能在数据安全中的应用场景

场景一&#xff1a;数据资产梳理 数据资产梳理是数据安全的基础。知道企业究竟有多少数据&#xff0c;这些数据在哪里&#xff1f;有哪些类型的数据&#xff1f;其中哪些是敏感数据&#xff1f;这些数据的敏感等级分别是什么&#xff1f;只有明确了保护的目标&#xff0c;才能…...

2024.1.16每日一题

LeetCode 2719.统计整数数目 2719. 统计整数数目 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你两个数字字符串 num1 和 num2 &#xff0c;以及两个整数 max_sum 和 min_sum 。如果一个整数 x 满足以下条件&#xff0c;我们称它是一个好整数&#xff1a; num1 &l…...

python入门,数据容器的通用操作(len,max,min,sorted)

1.len统计容器内元素个数 2.max统计元素最大元素 3.min统计元素最小元素 4.容器的转化功能 list&#xff08;容器&#xff09;将给定容器转化为列表 字符串转列表将字符串内的每一个元素都取了出来作为列表的每一个元素 字典则只会取出它的key&#xff0c;value会消失 str&…...

运筹说 第67期 | 动态规划模型的建立与求解

通过前一期的学习&#xff0c;我们已经学会了动态规划的基本概念和基本原理。本期小编带大家学习动态规划模型的建立与求解。 动态规划模型的建立 一 概述 建立动态规划的模型&#xff0c;就是分析问题并建立问题的动态规划基本方程。 成功地应用动态规划方法的关键&#x…...

大模型压缩与优化的技术原理与创新方法

目录 前言1 模型压缩简介2 知识蒸馏3 模型剪枝3.1 结构化剪枝3.2 非结构化剪枝 4 模型量化4.1 浮点表示 vs 定点表示4.2 位数选择与性能影响4.3 量化技术 5 其他模型压缩方法5.1 Weight Sharing: 参数共享5.2 Low-rank Approximation: 低秩分解5.3 Architecture Search: 神经网…...

ConcurrentSkipListMap 深度解析

ConcurrentSkipListMap是Java集合框架中的一员&#xff0c;它实现了ConcurrentNavigableMap接口&#xff0c;基于跳表&#xff08;Skip List&#xff09;实现&#xff0c;并提供了高效的并发控制。在本文中&#xff0c;我们将深入研究ConcurrentSkipListMap的底层实现原理、适用…...

Vue学习笔记6--配置代理

一、axios Axios 是一个基于 promise 网络请求库&#xff0c;作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。 二、配置代理 1. 方法一 在…...

嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第三天-C++类和对象高级应用(物联技术666)

链接:https://pan.baidu.com/s/1YRXI0WiABUlYaQXQDNfbyA?pwd=1688 提取码:1688 上午:类和对象高级应用(续) 下午:派生和继承 教学内容: 1、友元 类的私有成员只能在类定义的范围内使用,也就是说私有成员只能通过它的成员函数来访问但是,有时候需要在类的外部访问…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...