linux系统平台,使用QML结合C/C++实现图片浏览功能

偶尔善良 提交于 2020-01-25 02:25:59

一、原理:

使用QML的Image控件显示图片,通过修改Image控件“source”属性,可以让Image控件显示不同的图片,“source”属性指定图片的全路径(图片路径及图片的名字),在C++代码中可以实现图片全路径的更换,通过QML和C++的交互,QML可以取得新的图片的路径,达到切换图片的目的。

二、主要实现功能:

上一张/下一张图片显示、图片的放大/缩小、图片的左旋转/右旋转、幻灯片播放/暂停、返回上一层画面和返回主画面等功能。

三、实现方法/步骤:

1、在QML文件中描画各种按钮的位置及图片的显示区域。

2、用linux的“find”命令建立播放列表,生成名为“pic.lst”的文件,该文件保存指定路径下的所有符合指定扩展名的全部图片,每一行保存一个图片文件的全路径,在C++代码中实现。

3、使用C/C++语言的QFile对文件“pic.lst”进行操作,可以实现读取其中一行的功能,即取出一个图片的全路径

4、“pic.lst”文件中每一行保存一个图片的全路径,使用C/C++语言,通过不同行的行号,来取得不同图片的全路径,实现上一个/下一个图片取得的功能。

5、通过设置Image控件的“scale”属性,实现图片的放大和缩小功能。

例如:

imageShow.scale = 1.0;     /* 图片原始尺寸 */

imageShow.scale += 0.1;    /* 放大0.1倍 */

imageShow.scale -= 0.2;    /* 缩小0.2倍 */

其中“imageShow”为Image控件的的“ID”值,imageShow.scale为“1”的时候,表示原始尺寸。

6、通过设置Image控件的“rotation”属性,实现图片的旋转功能。

例如:

imageShow.rotation -=90;     /* 左旋转 */

imageShow.rotation +=90;     /* 右旋转 */

其中“imageShow”为Image控件的的“ID”值。

7、通过“Timer”控件设置幻灯片播放时间,设置一个定周期,当设置的时间达到后,自动显示下一张图片,在“onTriggered”事件里实现图片的切换。

interval: 2000      /* time长度控制,2000毫秒后显示下一张图片 */

 

四、重点/难点/知识点:

1、利用linux的find命令建立播放列表:

find /home/ -name \"*.jpg\" -o -name \"*.png\" -o -name \"*.bmp\" -o -name \"*.gif\" > /home/pic.lst

2、“.lst”和“.txt”文件一样,属于文本文件。

3、“system”函数:执行括号里的字符串命令,可以将需要执行的linux命令放到函数的参数中,就可以执行该命令。

原型:system(const char * string)

例如:system(“ls”)就相当于执行linux的“ls”命令。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!