链接: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()));