一般来说,图像轮播都是采用ListView等model进行设计, 比较方便。  这里展示我自己设计的图像轮播

方案, 仅采用两个QImage实现;

下面展示代码以及简述:(注:  以下代码为本人原创, 如需要应用于商业,请留言通知!)

import QtQuick 2.0
import QtQuick.Window 2.3
import QtQuick.Controls 1.4
import MaterialUI 1.0
import com.Advertisement 1.0
AppWindow{
id: adverpage;
flags:Qt.FramelessWindowHint;
bDomal: true;
x: (Screen.desktopAvailableWidth - width)/2;
y: (Screen.desktopAvailableHeight - height)/2; QtObject{
id:__inter;
property var advertises: adver.avertises;
property real index: -1;
property real time: 20; //广告时间; //找到下一个;
property var firstImg : img1.x == 0? img2: img1;
property var secondImg : img1.x == 0 ?img1: img2;
property var firstMove : img1.x == 0? img2Moving: img1Moving;
property var secondMove : img1.x == 0? img1Moving: img2Moving;
property var nextIndex: index+1 >= advertises.length ? 0: index + 1; //得到下一个序号;
} function play()
{
//初始化;
__inter.index++;
if( __inter.advertises.length >= 2)
{
if( Qt.platform.os == "windows")
{
img1.source = "file:///" + __inter.advertises[__inter.index];
img2.source = "file:///" + __inter.advertises[__inter.nextIndex];
}else{
img1.firstImg.source = __inter.advertises[__inter.index];
img2.source = __inter.advertises[__inter.nextIndex];
}
}
remainTime.text = __inter.time.toString() + " 秒";
timer.start();
} function stop()
{
timer.stop();
adverpage.close();
} function scroll()
{
__inter.time--; //时间更新;
remainTime.text = __inter.time.toString() + " 秒";
if( __inter.time > 0 )
{
console.log(__inter.advertises[__inter.index]);
if( Qt.platform.os == "windows")
{
__inter.secondImg.source = "file:///" + __inter.advertises[__inter.nextIndex]; //预存图像;
}else{
__inter.secondImg.source = __inter.advertises[__inter.nextIndex];
}
__inter.firstMove.from = 0;
__inter.firstMove.to = -__inter.firstImg.width;
__inter.secondMove.from = __inter.secondImg.width;
__inter.secondMove.to = 0;
__inter.firstMove.start();
__inter.secondMove.start();
}else{
timer.stop();
adverpage.close();
}
__inter.index = __inter.nextIndex; //下一个;
}
Rectangle{
id: scrollArea;
width: img1.x > img2.x? img1.width: img2.width;
height:Math.max(img1.height, img2.height);
clip: true;
Row{
spacing: Global.margin;
z: 2;
anchors{
top: parent.top;
topMargin: Global.margin;
right: parent.right;
rightMargin: Global.margin;
}
Label{                                    //倒计时以及“关闭广告”功能;
id: remainTime;
width: 50;
height: 20;
color: "red";
font.bold: true;
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignVCenter
}
Label{
width: 50;
height: 20;
color: "red";
font.bold: true;
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
text:qsTr("关闭广告");
MouseArea{
anchors.fill: parent;
onClicked:{
console.log("no right to close");
stop();
}
}
}
} Image {
id:img1
cache: false;
x: 0;
anchors.verticalCenter: parent.verticalCenter;
NumberAnimation{
id: img1Moving;
target: img1
properties: "x"
duration: 300;
}
}
Image{
id: img2;
cache: false;
x: img1.width;
anchors.verticalCenter: parent.verticalCenter;
NumberAnimation{
id: img2Moving;
target: img2
properties: "x"
duration: 300;
}
} MouseArea{                            //暂停功能;
anchors.fill: parent;
cursorShape: Qt.PointingHandCursor
onClicked: {
if( timer.running )
timer.stop();
else
timer.restart();
}
}
} Advertisement{                    //从本地获取要展示的广告列表;
id: adver;
} Timer{                          //定时器,用于轮播;
id: timer;
repeat: true;
interval: 1500;
onTriggered:{
scroll();
}
}
}

  

qml: 另类图像轮播;的更多相关文章

  1. jquery的fadeTo方法的淡入淡出轮播图插件

    由于对基于jquery的简单插件开发有了一定的了解,慢慢的也对基于jquery的插件开发有了兴趣,在上班结束之后就研究各种插件的思路逻辑.最近开发了一款基于jquery的fadeTo方法的轮播图插件, ...

  2. Qt编写自定义控件23-广告轮播控件

    一.前言 广告轮播这个控件做的比较早,是很早以前定制一个电信客户端时候用到的,该客户端需要在首页展示轮播预先设定好的图片,图片的路径可以自由设定,然后轮播的间隔速度可以自由控制,同时该控件还需要提供两 ...

  3. CSS3常用属性(边框、背景、文本效果、2D转换、3D转换、过渡、有过渡效果大图轮播、动画)

    CSS3边框: 1.CSS3圆角:border-radius  属性--创建边框线的圆角 <body style="font-size:24px; color:#60F;"& ...

  4. Jquery 轮播图简易框架

    =====================基本结构===================== <div class="carousel" style="width: ...

  5. 12款经典的白富美型—jquery图片轮播插件—前端开发必备

    图片轮播是网站中的常用功能,用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美 ...

  6. 第十篇.bootstrap轮播

    使用bootstrap的轮播插件可以向站点添加滑块,内容可以是图像,内嵌框架,视频或其它任何内容,使用轮播插件需要引入bootstrap.min.js. <div id="carous ...

  7. html+css+javascript实现简易轮播图片

    html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <lin ...

  8. Nivo Slider - 世界上最棒的 jQuery 图片轮播插件

    Nivo Slider 号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本.目前下载量已经突破 1,800,000 次!jQuery 独立版本的插件主要有如 ...

  9. Android学习笔记之图片轮播...

    PS:一个bug又折腾了一个下午....哎... 学习内容: 1.Android利用ViewPager和PagerAdapter实现图片轮播... 2.使用反射机制获取Android的资源信息... ...

随机推荐

  1. 学习 Spring (一) Spring 介绍

    Spring入门篇 学习笔记 Spring 是什么 Spring 是一个轻量级的 IoC (控制反转)和 AOP (面向切面)的容器框架 框架与类库的区别 框架一般是封装了逻辑.高内聚的,类库则是松散 ...

  2. 【python练习题】程序7

    #题目:将一个列表的数据复制到另一个列表中. l = [1,2,3,4,5,6,7,8] m = [] m = l[:] print (m)

  3. MySQL官方教程及各平台的安装教程和配置详解入口

    官方文档入口: https://dev.mysql.com/doc/ 一般选择MySQL服务器版本入口: https://dev.mysql.com/doc/refman/en/ 在右侧有版本选择: ...

  4. 67 个JavaScript和CSS实用工具、库与资源

    在这篇文章中,我不会与大家谈论大型的前端框架,如 React.Angular.Vue 等,也没有涉及那些流行的代码编辑器,如 Atom.VS Code.Sublime,我只想与大家分享一个有助于提升开 ...

  5. 读取jar文件的sha1码,请求maven官方的solrsearch接口查询该jar文件所对应的maven坐标信息

    版权声明:本文为博主原创文章,未经博主允许不得转载. import com.google.gson.JsonObject; import com.google.gson.JsonParser; imp ...

  6. Python中xlwt解析

    1.导入模块 import xlwt 2.构造excel表 workbook = xlwt.Workbook()                      #返回一个工作簿对象 3.构造sheet w ...

  7. 【XSY2691】中关村 卢卡斯定理 数位DP

    题目描述 在一个\(k\)维空间中,每个整点被黑白染色.对于一个坐标为\((x_1,x_2,\ldots,x_k)\)的点,他的颜色我们通过如下方式计算: 如果存在一维坐标是\(0\),则颜色是黑色. ...

  8. MT【310】均值不等式

    (2014北约自主招生)已知正实数$x_1,x_2,\cdots,x_n$满足$x_1x_2\cdots x_n=1,$求证:$(\sqrt{2}+x_1)(\sqrt{2}+x_2)\cdots(\ ...

  9. 【HDU - 4348】To the moon(主席树在线区间更新)

    BUPT2017 wintertraining(15) #8G 题意 给一个数组a,有n个数,m次操作.\(N, M ≤ 10^5, |A i| ≤ 10^9, 1 ≤ l ≤ r ≤ N, |d| ...

  10. Asp.Net Output.Write()

    string name="张三" <div> <label>@Output.Write(name)</label> </div> 在 ...