内容
在Linux平台(Redhat或Ubuntu)环境下配置QT环境,设计一个基于图形化界面的MP3播放器。
抽象数据类型定义
QT是一个拥有很多C++封装方法的集成工具,我们使用时候需要在.h文件的类定义中添加自己所需要的变量和方法定义
1 定义int类型私有变量 playIndex存放进程标号
2 定义QPrecess类型私有变量*playProcess控制进程
3 定义QStringList 类型私有变量playList存放音乐列表
4 定义Init()初始化函数函数和playMovie()声明
5 在slots中添加所需要的槽函数,即事件触发的处理函数。
6 arguments存放文件,program存放进程工具,用于process进程的执行,比如->start()函数的两个参数一个是执行的进程,一个是arg参数。
环境搭建
(1)QT安装与配置
解压qt-everywhere-opensource-src-4.7.3.tar.gz
命令tar -xvzf qt-everywhere-opensource-src-4.7.3.tar.gz
进入qt-everywhere-opensource-src-4.7.3 目录 执行配置文件
命令 sudo ./configure 安装过程键入 o yes
等待安装成功
(2)编译源码
命令make –j8
安装程序 make install 安装成功后系统生成一个文件 /usr/local/Trolltech/Qt-4.7.3/bin/qmake
(3)配置QT环境变量
命令 vi /usr/local/Trolltech/Qt-4.7.3.setenv.sh
export QTDIR=/usr/local/Trolltech/Qt-4.7.3
export PATH= Q T D I R / b i n : QTDIR/bin: QTDIR/bin:PATH
export LD_LIBRARY_PATH= Q T D I R / l i b : / u s r / l o c a l / l i b : QTDIR/lib:/usr/local/lib: QTDIR/lib:/usr/local/lib:LD_LIBRARY_PATH
保存退出 wq
命令 source/usr/local/Trolltech/Qt-4.7.3.setenv.sh
命令qmake –v 输出版本信息 表明配置成功
(4)测试
执行命令 qmake –project qmake make ./keshe
可正常使用,接下来进入正题。
详细设计
设计栏的工具拖5个Push button 和2个Horizontal Spacer
1个滑槽horizontal slider 和1个调节旋钮dial
替换部件样式
新建资源文件与添加图片资源
然后进行图标大小修改和格式调整
修改各个部件的样式颜色
界面如下
修改对象名便于函数建立,每个部件转到槽函数定义功能
代码设计
Widget类的声明
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_btn_open_clicked();
void on_btn_play_clicked();
void on_btn_stop_clicked();
void on_btn_prevous_clicked();
void on_btn_next_clicked();
void on_dial_voice_valueChanged(int value);
private:
Ui::Widget *ui;
QStringList playList;
int playIndex;
QProcess *playProcess;
void Init();
void playMovie(const QString filename);
};
初始化
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
Init();
}
Widget::~Widget()
{
delete ui;
}
void Widget::Init()
{
playList.clear();
playIndex=0;
playProcess=new QProcess(this);
ui->lineEdit2->setText("now playing...");
}
定义打开文件方法
oid Widget::on_btn_open_clicked()
{
QStringList array = QFileDialog::getOpenFileNames(this,"open your file",
"/home/liujinze/keshe/qtmp3/mp3/music","video(*.mp3 )");
if(array.length()<=0){
return;
}
playList =array;
playIndex=0;
playMovie(playList.at(playIndex));
}
定义播放功能方法,调用进程
void Widget::playMovie(const QString filename){
QString program="/usr/bin/madplay";
QStringList arguments;
arguments<lineEdit->setText(s);
playProcess->close();
system("killall -9 madplay");
playProcess->start(program,arguments);
}
定义暂停继续上一首下一首的切换功能
void Widget::on_btn_play_clicked()//继续
{
system("killall -CONT madplay &");
}
void Widget::on_btn_stop_clicked()//暂停
{
system("killall -STOP madplay &");
}
void Widget::on_btn_prevous_clicked()//上一首
{
if(playIndex>0){
playIndex--;
playMovie(playList.at(playIndex));
}
}
void Widget::on_btn_next_clicked()//下一首
{
if(playIndex
定义声音调节方法
void Widget::on_dial_voice_valueChanged(int value)
{
char tmp[100];
sprintf(tmp,"amixer set Master %d% ",value);
system(tmp);
}