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

这篇具有很好参考价值的文章主要介绍了Qt 调试系统输出报警声以及添加资源。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

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

一、方法1 使用 Qsound

1.添加都文件 直接报错

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

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

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();
}

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

小结

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

二、第二种方法

调用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

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

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

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

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

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

2.3 下次需要添加资源

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

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);

    // 显示QLabel
    label->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.mp3
       player->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);

       // 显示QLabel
       label->show();
}

Widget::~Widget()
{
    delete ui;
}


4.添加资源路径技巧

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

三、 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.jpg

templ = imread("D:/QTcode/gou/gouPiPeiMain/gouPiPeiMain/moban/moban.jpg");//模板

改成

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

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

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格式

总结

继续加油文章来源地址https://www.toymoban.com/news/detail-798806.html

到了这里,关于Qt 调试系统输出报警声以及添加资源的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt+QtWebApp开发笔记(二):http服务器日志系统介绍、添加日志系统至Demo测试

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130762721 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中… 上一篇:《Qt+QtWebApp开发笔记(一

    2024年02月05日
    浏览(28)
  • QT6为工程添加资源文件,并在ui界面引用

    这种方式虽然添加到了工程中,但不能在UI设计界面完成引用。主要原因可能是未把文件放入到项目资源文件中,以下面一种方式可以看出区别。 选择qt resource file,点击选择, 然后通过下面的设置得到一个.qrc的资源文件, 鼠标右键这个资源文件,第一种添加的文件在qrc文件

    2024年02月11日
    浏览(35)
  • qt学习:模仿qq界面+添加资源+无边框界面+修改样式

    目录 一,创建登录ui界面类 LoginWidget 二,添加图片资源 三,通过样式的方法将图片设置成圆圈的背景 四,新建登录后的ui界面  MWindow  简陋的就可以,因为只为了学习,可以自己补充 五,新建三个嵌套ui界面类,ChatWidget聊天界面   FriendWiidget好友界面   CollectWidget收藏界面

    2024年01月23日
    浏览(30)
  • Ubuntu22.04安装Qt开发环境(包括VMware虚拟机、Ubtuntu系统以及QT的安装与卸载!)

    title: Ubuntu22.04安装Qt开发环境(包括安装与卸载!) date: 2023-8-6 sidebar: auto author: xiol(十六进制) tags: 学习 C++ Qt categories: Qt 🍓🍊在Ubuntu22.04下安装Qt🍭🍓🍬 最近单位的虚拟机越用越卡,打算重新安装一下环境,把遇到的问题以及解决办法详细记录一下。 1.1 确定安装好VMwar

    2024年01月23日
    浏览(44)
  • Qt/C++编写视频监控系统81-Onvif报警抓图和录像并回放

    视频监控系统中的图文警情模块,是通过Onvif协议的事件订阅拿到的,通过事件订阅后,设备的各种报警事件比如入侵报警/遮挡报警/越界报警/开关量报警等,触发后都会主动往订阅者发送,而且一般都是会发送两次,一次报警开始,一次报警结束,每一种事件都对应有文字

    2024年02月10日
    浏览(33)
  • Android Studio开发之路(二)添加图片资源

    第一步:复制要添加的图片 第二步:右键点击项目的res-drawable目录,选择paste粘贴 选择drawable目录 问你是否确定要复制,点击ok即可 然后就可以看到在drawable目录下出现了复制的图片 然后在xml中添加代码就可以显示在界面上了

    2024年02月09日
    浏览(34)
  • Qt 添加MySQL驱动教程 以及 操作数据库(增删查改)

    前言: 使用MySQL数据库前我们必须添加MySQL驱动,有了驱动我们才能连接数据库,连接数据库成功后才能操作数据库(增删查改)。 Qt 添加MySQL驱动教程 如下(本人亲测成功版): https://download.csdn.net/download/qq_42432673/88093467 在数据库中创建表,表结构如下: 现在驱动已经引入

    2024年02月15日
    浏览(43)
  • STM32CubeIDE开发(四), stm32调试信息串口通信输出显示

    目录 一、stm32串口配置 三、串口驱动功能调用及编译实现 四、编译测试         关于cubeIDE开发基本技巧及流程,本文不详细叙述,请参考:cubeIDE快速开发流程_py_free的博客-CSDN博客_cubeide汉化 一、stm32串口配置         本文采用的开发板是stm32L496VGT3,其有两个 USB 接口,

    2023年04月08日
    浏览(37)
  • Qt开发简易蓝牙调试助手(低功耗蓝牙)

    Qt中是有蓝牙模块的,直接用此模块开发就行。但是注意使用的是低功耗蓝牙的类,连接方式和经典蓝牙会有区别 大致的连接步骤是: 搜索附近的蓝牙设备 连接指定的蓝牙设备 获取服务 指定服务进行连接(因为每一种下的特征对象的权限是不一样的,有的只有读取权限,没

    2024年02月16日
    浏览(29)
  • 嵌入式开发板qt gdb调试

    1) 启动 gdbserver ssh 或者 telnet 登陆扬创平板 192.168.0.253, 进入命令行执行如下: chmod 777 /home/HelloWorld (2) 打 开 QTcreator-Debug-StartDebugging-Attach to Running Debug Server 进行如下设置,设置监听端口10000. 点击上图中的按钮,由于按钮中的函数设置了断点,则跳到断点,界面如下

    2024年02月04日
    浏览(84)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包