嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第五天-Qt编程技巧若干解答(物联技术666)

发布时间:2024年01月22日

链接:https://pan.baidu.com/s/1-u7GvgM0TLuiy9z7LYQ80Q?pwd=1688
提取码:1688

============? QT在Windows下制作图表 ============

QT是跨平台的程序设计库,在windows下的程序往往想要有一个好看的图标,方法如下:

1.准备个ICO图标。例如:myappico.ico

2.用写字版新建个文件,里面就写一行:

IDI_ICON1??? ICON?? DISCARDABLE?? "myappico.ico"

3.保存改名为myapp.rc并将它和图标myappico.ico一起复制到QT工程项目的目录。

4.用写字版打开你的QT工程文件(如 "myapp.pro" ),在里面最后新添一行

RC_FILE = myapp.rc

5.保存,编译工程.

============? phonon 类介绍 ============

phonon最初是一个源于KDE的项目,为使用音频和视频的应用程序开发提供的一个框架。多媒体文件的播放主要过程包括:文件读取、分流、解码、输出。而且还得需要安装相应的后端插件来完成播放任务。

?应用程序与phonon库及后端的关系如下:

?如果想要运行使用Qt中的phonon写的程序,需要满足一下条件:Qt基本库、Qt phonon库、phonon_backend(后端插件)和多媒体播放后台。

下面以linux(Fedora 12)系统、Qt 4.6、mplayer为例,假设Qt基本库已经安装好,默认phonon是没有被安装的,介绍phonon和后端插件的安装。

?Phonon库安装 :

进入源代码的phonon目录,如"/usr/src/qt-everywhere-opensource-src-4.6.0/src/phonon",实际代码并不在里面,从phonon.pro文件可知源代码在“/src/3rdparty/phonon/phonon”,但并不影响编译。在终端输入 “make;make install”即可,如果安装时出错,也可手动将lib、include下相关文件拷贝到安装目录。

后端插件安装 :

(1)下载phonon-mplayer。

??????? 地址: [KDE] Index of /trunk/playground/multimedia/phonon-backends/mplayer

??????? 使用svn下载: svn co svn://anonsvn.kde.org/home/kde/trunk/playground/multimedia/phonon-backends/mplayer

(2)返回phonon-mplayer目录,编译(qmake;make)生成phonon_backend/libphonon_mplayer.so动态链接库。

(3)将libphonon_mplayer.so拷贝到$QTDIR/plugins/phonon_backend/

?说明:帮助文档中介绍Linux下Qt默认只支持gstreamer,其它的不做保证。但实际中由于mplayer安装比较方便,支持的文件格式全,使用的人也非常多,所以我以mplayer为例。而gstreamer的后端插件可以在系统的“/usr/lib64/kde4/plugins /phonon_backend”目录直接找到(如果已经从源上安装了的话)。

?测试

examples/phonon/qmusicplayer我下的例子用mplayer做后端播放音乐会有问题,使用demos/qmediaplayer。

?当然也可以用一个简单的例子,如下:

?#include <QtGui>

?#include <Phonon/MediaObject>

?#include <Phonon/VideoPlayer>

?#include <Phonon/BackendCapabilities>

?int main(int argv, char **args)

?{

??? QApplication app(argv, args);

??? Phonon::MediaObject *music =Phonon::createPlayer(Phonon::MusicCategory,

???????????????????? Phonon::MediaSource("/home/dlw/Music/mxshf.mp3"));

???? music->play();

???? /* 视频播放

???? Phonon::MediaObject *music =

???? Phonon::createPlayer(Phonon::VideoCategory,

???? ???? Phonon::MediaSource("/media/DLW/movie/One.Night.in.Supermarket.avi"));

???? music->play();*/

???? return app.exec();

}

MediaObject中有播放完成的信号aboutToFinish();我们写一个槽去接收就能实现。

connect(this->media,SIGNAL(aboutToFinish()),this,SLOT(restartmusic()));

文章来源:https://blog.csdn.net/vx349014857/article/details/135739118
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。