0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用Qt Creator人机交互界面的车载播放系统的设计与实现

电子设计 来源:郭婷 作者:电子设计 2018-12-04 08:44 次阅读

1.Qt简介

Qt是Trolltech公司的标志性产品(现Trolltech公司已被手机巨头NOKIA公司收购),是一个跨平台的C++图形用户界面(GUI)工具包。它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器。Qt是面向对象语言,易于扩展,并且允许组件编程。Qt应用程序接口与工具兼容于所有支持平台,让开发员们掌握一个应用程序接口便可执行与平台非相关的应用开发与配置。

Qt支持下述平台:

1)MS/Windows-95、98、NT 4.0、ME、2000、XP、Vista和Win7;

2)Unix/X11-Linux、Sun Solaris、HPUX、CompaqTru64 UNIX、IBM AIX、SGI IRIX、FreeBSD、BSD/OS和其它很多X11平台;3)Macintosh-Mac OS X;

4)Embedded-有帧缓冲(framebuffer)支持的嵌入式Linux平台,Windows CE.

Qt对不同平台的专门API进行了专门的封装(文件处理、网络等)。

Qt被Nokia收购后推出了一款新的轻量级集成开发环境(IDE)Qt Creator.QtCreator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境(IDE),并确保首次接触Qt框架的开发人员能迅速上手和操作。

Qt Creator包含了一套用于创建和测试基于Qt应用程序的高效工具,包括:一个高级的C++代码编辑器、上下文感知帮助系统、可视化调试器、源代码管理、项目和构建管理工具。

Qt/Embedded(简称QT/E)是一个专门为嵌入式系统设计图形用户界面的工具包,是NOKIA公司的图形化界面开发工具Qt的嵌入式版本,它通过QtAPI与LinuxI/O以及Framebuffer直接交互,拥有较高的运行效率,而且整体采用面向对象编程,拥有良好地体系架构和编程模式。

Qt/embedded和Qt一样,在4.5版本之后提供了三种不同的授权协议GPL,LGPL和Commercial.开发者使用QT/E开发的应用程序要移植到不同平台时,只需要重新编译代码,而不需要对代码进行修改。并可以随意设置程序界面的外观、方便地为程序连接数据库、使程序本地化、将程序与Java集成等。

2.使用Qt Creator设计界面

在Qt Creator中完成车载播放器工程的创建后首先是设计界面。界面可用代码生成,也可用Qt Designer辅助设计。使用Qt Designer设计界面只需将界面中所需的窗口部件拖入ui界面文件中,然后设置属性修改其显示效果,最后使用布局控件设置布局效果。通过拖放窗口部件完成的界面在布局上不够精确,因此本系统采用纯代码来完成界面开发。

本系统的界面主要包括的窗口部件有Table View、Push Button等。在界面的布局上,系统采用了手工布局方式。

手工布局方式通过基类Q W i d g e t提供的setGeometry()函数来设置子窗口部件的位置和大小,当窗口大小改变的时候,重新计算窗口的大小或者变化比例,然后重载QWidget::resizeEvent(QResizeEvent*)函数,能够使得子窗口部件的大小和位置作出适应性的改变。

如图1所示为本系统的主界面:

界面设计的主要开发过程如下:

1)使基础窗口QWidget继承于主窗口QMainWindow,窗体构造函数负责模板的初始化;

2)创建MyButton类构造窗体按钮部件,并对窗口部件中使用的对象以及函数进行声明,包括图标、名称、字体、文本、坐标、画笔、按钮是否有效、重绘时间、鼠标按下事件等;

3)添加按钮的信号与槽。系统界面中每个功能按钮都对应一个信号和槽,信号和槽式Qt编程的核心技术,通过信号可以将界面上的空间所发生的事件进行发射,槽函数负责接受相应信号并作出响应处理。如播放暂停按钮,与其对应的信号是单击,它的单击信号连接一个槽处理函数,在这个函数中通过QProcess来向slave模式下的MPlayer发送命令,达到控制播放的目的。其他的控件在处理方式上都与播放暂停按钮类似,都有自己得信号和槽。

3.软件功能模块设计

机车车辆车载播放器主要由音频播放和视频播放两大部分组成,这两部分存在着很多相同和相似的功能,为避免重复编码,采用C++面向对象的模块化设计思想,将两部分中功能相似的部分抽取出来,形成独立的功能模块,提高了软件的可重用性和系统的运行效率。各功能模块均采用C++类来实现,对模块内部的数据进行封转,对外提供接口供外部调用,一方面提高了系统的数据安全性,另一方面也使软件编码更加的规范。

为实现机车车辆车载播放系统的功能,创建了窗体文件用于设置车载播放器的窗体;创建了配置文件用于处理系统配置信息;创建了用于实现对数据库操作的源文件;创建了触摸屏控制文件以及歌曲列表文件。

具体功能模块设计方式如下:

1)搜索歌曲

点击搜索歌曲按钮时,跳出一个对话框,当用户输入了歌曲名或名称中的部分内容并确定后,发送消息到服务器端,服务器端对表song进行模糊查询,得到符合的歌曲列表,将这些信息返回给客户端,在客户端形成一个QwidgetTable控件,用来显示搜索的结果。当用户点击其中的一行时,将相应行的歌曲信息赋值给current并播放。

2)上一首

上一首按钮连接了prev()函数,它的功能是通过prev()函数来实现的。在此函数中,实现读取usersong.xml文件中位置为songpos-1的歌曲信息,赋值给current,然后进行播放,实现上一首功能。

3)播放

当点击播放按钮时,隐藏播放按钮,显示暂停按钮,并读取c u r r e n t中的信息,通过Phonon的函数play()实现播放。

4)暂停

当点击暂停按钮时,隐藏暂停按钮,显示播放按钮,调用Phonon中的pause()函数,将播放暂停。

5)下一首

当点击下一首按钮时,调用nextFile()函数,并且当歌曲播放完之后会产生一个aboutToFinish()信号,这个时候也会调用nextFile()函数。在此函数中调用readinformation()函数,得到下一首的信息,并播放。

6)打开本地文件

Qt和QT/Embedded提供了一套标准的通用对话框为方便程序员进行某些特定功能对话框的编程,其中包括了文件对话框QFileDialog.通过弹出QFileDialog对话框,我们既可以选择一个或者多个文件以及目录,也可以输入文件名或者路径。它可以限制用户只能选择已经存在的文件,也可以允许用户输入一个新的文件名;此外,使用过滤器,则只能选择符合特殊标准的文件名。点击打开按钮会弹出获取本地文件路径和名称的对话框,当用户选中后,因为它是本地文件,会直接把地址赋给播放的对象,当播放完后继续播放usersong.xml中的下一首。

7)静音

音量的控制是通过Phonon::VolumSlid e r控件实现的,通过执行语句:u i ->volumeSlider->setAudioOutput(audiooutput)将音量的控件连接到了音频输出的设备上,通过语句Phonon::createPath(mediaobject,audiooutput)音频输出的设备和播放的对象mediaobject连接,因此实现静音功能。

8)显示歌曲名称

void Player::setLabel(QString

track)

{

QString filename = mediaObject-

>currentSource()。fileName();

filename = filename.right

( f i l e n a m e . l e n g t h ( ) - f i l e n a m e .

lastIndexOf(‘/’)-1);

this->setWindowTitle(“Player

~”+filename);

}

9)关闭窗口

双击窗体空白处可关闭播放器。需重定义鼠标双击事件调用close()函数加以实现。

10)数据库操作

程序中使用SQLite数据库对歌曲及用户信息进行管理。

SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎。它是完全独立的,不具有外部依赖性,非常健壮。SQLite第一个Alpha版本诞生于2000年5月,至今已经有11个年头,最新版本SQLite3也已经发布。SQLite是完全免费开源的软件。

SQLite能够运行在Windows/Linux/Unix等各种操作系统。SQLite源代码大约3万行,250KB大小,占用资源非常少。相比Mysql、PostgreSQL这两款着名的开源数据库,SQLite占用资源更少,处理速度更快,非常适合用于嵌入式系统开发中。

在系统中采用SQLite数据库对歌曲信息结构进行组织、存储以及管理。通过使用SQLite建立歌曲信息数据库表,然后就可以在程序通过相关接口函数对歌曲信息进行操作,如插入、删除、更新、查询等。采用SQLite数据库进行歌曲信息的管理大大降低了编程的复杂性。

在具体的系统数据库模块中,采用了Qt连接SQLite数据库的方式来操作数据库。Qt框架中QtSql模块提供了一个平台无关且数据库无关的访问S Q L数据库的接口。Qt中的每个数据库连接用一个QSqlDatabase对象来表示,同时Qt也使用不同driver来和各种不同数据库的API进行通讯。对于SQLite数据库Qt提供了很好的支持和封装,通过Qt的相关类可以很容易的进行数据库操作。

要实现对S Q L i t e 数据库进行操作首先需要创建一个关于数据库的创建和链接的头文件,然后在头文件中通过创建QSqlDatabase数据库连接对象来调用addDatabase()并设置相关函数的属性,然后在工程文件的最后添加关于使用数据库的声明“QT+=sql”.

4.MPlayer播放器的控制

MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布。此款软件可在各主流作业系统使用,例如Linux和其他类Unix系统、微软的视窗系统及苹果电脑的Mac OS X系统。MPlayer能够播放大多数MPEG、VOB、AVI、OGG、VIVO、ASF/WMV、Qt/MOV、FLV、RM等媒体文件。相对其它播放器来说,MPlayer还具有资源占用非常少,不需要任何系统解码器就可以播放各种媒体格式,在低配置的机器上使用等突出优势。所以对于运算速度相对较弱的嵌入式系统来说,MPlayer是一个很好的选择。

在本文的系统设计中,选用了MPlayer作为系统的媒体播放器来进行媒体文件的播放以及控制。在系统的播放模块中采用Qt的QProcess(进程类)通过start方法调用slave模式下的MPlayer产生一个进程,然后通过QProcess类的write方法向MPlayer发送控制命令,实现控制播放的目的。

5.小结

本论文详细介绍了如何使用Qt Creator完成车载音乐播放系统的界面设计及程序代码的编辑与运行。此车载播放系统可实现的功能如下:

1)具有美观、易于理解和操作的主界面;

2)可按照多种方式对数据库中的歌曲进行查找;

3)可实现歌曲的播放、暂停,以及上一首和下一首歌曲的切换;

4)所选歌曲可生成播放列表,列表可以循环播放,列表信息可修改,在列表中双击歌曲名称可播放该歌曲;

5 ) 可对设备中存储的歌曲进行删除;

6)可播放外接存储器中的歌曲。

同时,系统可以方便地移植到各种嵌入式设备中。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 播放器
    +关注

    关注

    5

    文章

    384

    浏览量

    36861
  • 多媒体
    +关注

    关注

    0

    文章

    482

    浏览量

    36681
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72907
收藏 人收藏

    评论

    相关推荐

    嵌入式人机交互界面研究与实现

    考虑医院环境,医患使用场景等重要因素。  硬件因素  嵌入式人机交互界面开发,首先要基于适合的硬件平台系统方能实现其功能,硬件平台系统的核心
    发表于 11-29 15:52

    嵌入式人机交互界面研究与实现

    可靠性、稳定性、安全性、便捷性;医疗类嵌入式人机交互界面设计必须考虑医院环境,医患使用场景等重要因素。 硬件因素嵌入式人机交互界面开发,首先要基于适合的硬件平台
    发表于 08-22 14:55

    嵌入式人机交互界面研究与实现

    可靠性、稳定性、安全性、便捷性;医疗类嵌入式人机交互界面设计必须考虑医院环境,医患使用场景等重要因素。 硬件因素嵌入式人机交互界面开发,首先要基于适合的硬件平台
    发表于 11-26 10:38

    人机交互界面设计在产品设计中的应用

    、结构性。界面设计采取结构化以减少复杂度。  具体步骤:(1)进行产品设计前分析用户特点。考虑不同用户的认知能力,满足人的多样性与文化的多样性条件,实现用户对人机界面的多样性需求。(2)产品设计师设计
    发表于 01-25 16:18

    基于嵌入式Qt车载GUI平台该怎么设计?

    )可以满足用户需求,人机交互好,作为车载娱乐系统人机交互界面的开发平台,对整个系统的设计起着决
    发表于 09-30 07:45

    人机交互界面的色彩是什么?

    还记得此前的“蓝黑白金裙”之争吗?这个分歧源于我们的眼中用来分辨颜色的锥状细胞的差异,而人机界面中“蓝黑白金裙”之争同样存在,这是什么原因?本文为你揭秘,并从色彩角度为大家介绍人机交互界面的设计。
    发表于 10-18 07:24

    嵌入式人机交互界面研究与实现

    接触,最重要的因素就是它可以提供友好的用户界面、图像界面、灵活的控制方式、对专业知识要求低,甚至不需要嵌入式的知识就能让人们很快、很容易掌握嵌入式产品的使用方法,因此在嵌入式系统开发工作中人机
    发表于 05-05 08:31

    智能液晶显示模块实现人机交互界面

    随着工业制造技术的发展,HMI(人机界面)的应用场景愈加广泛,在能源、汽车、医疗、工控、充电桩等领域都有涉及。拓普微的智能液晶显示模块,能简单迅速地实现人机交互界面,外部
    发表于 08-20 07:09

    人机交互与人机界面的区别

    人机交互与人机界面的区别人机交互的概念(变频器基础知识)人机交互人机互动(Human-Computer Interface,简写HCI):是指人与计算机之间使用某种对话语言,以一定的
    发表于 09-10 08:42

    LCD和数字键盘实现人机交互界面

    引言目前,以LCD和数字键盘实现人机交互界面在智能终端中广泛采用。在不同的应用场合,对人机界面的要求也不同,一些情况下只要求简单参数的显
    发表于 12-22 06:09

    广播电视系统人机交互界面的设计与实现

    本文介绍了一种广播电视系统人机交互界面的设计方法,该系统以MSP430F149单片机为核心, 以LCM168651为菜单显示的主要部件,以ZLG7289B为键盘扫描管理模块;该设计方法
    发表于 08-11 08:17 23次下载

    人机交互系统界面设计方案解析

    播放按键,大至飞机上的仪表板、或是发电厂的控制室。本文将为您介绍几种人机交互系统人机交互界面的设计方案。 基于ARM的信号发生器
    发表于 10-16 16:33 0次下载

    人机交互的内容有哪些_人机交互主要研究什么

    一个交互界面的好坏,直接影响到软件开发的成败。友好人机交互界面的开发离不开好的交互模型与设计方法。因此,研究
    发表于 03-31 14:12 1.3w次阅读

    基于车载人机交互界面设计分析

    汽车人机交互界面在汽车设计中重要程度在逐渐增大,而且软件定义的界面、科技的进步、消费者需求的升级、互联网新势力造车崛起,都使得人机交互设计不断创新且迭代快速。
    发表于 07-30 10:16 813次阅读
    基于<b class='flag-5'>车载</b>的<b class='flag-5'>人机交互</b><b class='flag-5'>界面</b>设计分析

    什么叫人机交互人机交互是什么意思?

    界面设计:设计人机交互界面的结构、布局、内容和控件,以实现直观、易用性、反馈等要求。界面设计需要兼顾美观性、实用性和易用性,简洁、明了的
    的头像 发表于 08-26 11:39 2659次阅读