一、原理:
使用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”命令。
来源:CSDN
作者:papership
链接:https://blog.csdn.net/papership/article/details/104020946