QML 3D Demo

import Qt 4.7  
import org.webkit 1.0  
Rectangle{  
    id: page  
    width: 960; height: 720  
    color: "#201F25"  
    Rectangle{  
        id: banner  
        width: parent.width-20  
        height: logo.height+20  
        anchors.horizontalCenter: parent.horizontalCenter  
        y: 10; radius: 10; z: 10  
        opacity: 0.9  
        gradient: Gradient{  
            GradientStop{position: 0; color: "#8B0504"}  
            GradientStop{position: 1; color: "black"}  
        }  
        Image{  
            id: logo  
            source:"http://hi.csdn.net/attachment/201007/27/4920523_1280246207RSd0.png"  
            anchors.verticalCenter: parent.verticalCenter;  
            x: 15  
        }  
        Text{  
            text: "Meego Flickr ͼƬ"  
            color: "white"  
            font.bold: true  
            font.pixelSize: 48  
            style: "Raised"  
            styleColor: "black"  
            anchors.left: logo.right  
            anchors.leftMargin: 50  
            anchors.verticalCenter: parent.verticalCenter  
        }  
    }  
    Rectangle{  
        width: parent.width-20  
        anchors.horizontalCenter: parent.horizontalCenter  
        height: page.height-banner.height-30  
        y: banner.height+20  
        color: "#201F25"  
        XmlListModel{  
            id: feedModel  
            source: "http://api.flickr.com/services/feeds/photos_public.gne?"+(tags ? "tags="+commasep(tags)+"&" : "")+"format=rss2"  
            query: "/rss/channel/item"  
            namespaceDeclarations: "declare namespace media=/"http://search.yahoo.com/mrss//";"  
            XmlRole { name: "title"; query: "title/string()" }  
            XmlRole { name: "imagePath"; query: "media:thumbnail/@url/string()" }  
            XmlRole { name: "description"; query: "description/string()" }  
            XmlRole { name: "photoAuthor"; query: "author/string()" }  
        }  
        GridView{  
            id: feedList  
            width: parent.width  
            height: parent.height+200  
            model: feedModel;  
            z: 0;  
            property bool selected: false  
            cellWidth: 300+10;  
            cellHeight: 169+10;  
            delegate:[  
                Image{  
                    id: feedImage  
                    source: imagePath  
                    width: 300  
                    height: 169  
                    Rectangle{  
                        id: imageTextBack;  
                        anchors.fill: parent;  
                        color: "black"  
                        opacity: 0.8  
                        visible: false  
                        Text{  
                            id: imageText  
                            text: title  
                            color: "white"  
                            wrapMode: Text.WrapAnywhere  
                            font.pixelSize: 24  
                            font.bold: true;  
                            anchors.fill: parent  
                            horizontalAlignment: "AlignHCenter"  
                            verticalAlignment: "AlignVCenter"  
                        }  
                    }  
                    MouseArea{  
                        id: imageRegion  
                        anchors.fill: parent  
                        onClicked:{  
                            feedList.selected=true;  
                            storyContent.html="<html><mce:style><!--  
body{color: black} img{display: none} a{color: red }  
--></mce:style><style mce_bogus="1">body{color: black} img{display: none} a{color: red }</style> <body><h1>"+title+"</h1><h3>By:"+photoAuthor+"</h3><p>"+description+"</p></body></html>"  
                        }  
                    }  
                    states: [  
                        State{  
                            name: "hover"  
                            when: imageRegion.containsMouse==true  
                            PropertyChanges{target: imageTextBack; visible: true;}  
                        }  
                    ]  
                }  
            ]  
            transform: [  
                Rotation{  
                    id: imageWall;  
                    axis{x: 0; y: 1; z: 0}  
                    angle: 0  
                }  
            ]  
        }  
        Rectangle{  
            id: imageInfo  
            height: parent.height  
            width: parent.width-310  
            radius: 10; color: "white";  
            visible: false;  
            x: 1000  
            gradient: Gradient{  
                GradientStop{position: 0; color: "black"}  
                GradientStop{position: 1; color: "#1F1F1F"}  
            }  
            WebView{  
                id: storyContent  
                anchors.fill: parent;  
                smooth: true  
                html: ""  
            }  
            Rectangle{  
                id: buttonLogin  
                height: 30  
                width: 100  
                radius: 10  
                anchors.bottom: parent.bottom  
                anchors.bottomMargin: 5  
                anchors.horizontalCenter: parent.horizontalCenter  
                color: "#011C00"  
                gradient: Gradient{  
                    GradientStop{position: 0; color: "#69FF65"}  
                    GradientStop{position: 0.4; color: "#095606"}  
                    GradientStop{position: 0.8; color: "#69FF65"}  
                    GradientStop{position: 1; color: "#095606"}  
                }  
                MouseArea{  
                    anchors.fill: parent  
                    onClicked: {feedList.selected=false}  
                }  
                Text{  
                    anchors.centerIn: parent  
                    text: "Back"  
                    font.bold: true  
                    font.pixelSize: 12  
                    color: "white"  
                    style: "Raised"  
                    styleColor:"black"  
                }  
            }  
        }  
        states: [  
            State{  
                name: "selected"  
                when: feedList.selected==true  
                PropertyChanges{target: imageWall; angle: 55}  
                PropertyChanges{target: feedList; width: 1200}  
                PropertyChanges{  
                    target: imageInfo  
                    visible: true;  
                    x: page.width-width-15;  
                }  
            }  
        ]  
        transitions:[  
            Transition{  
                reversible: true  
                NumberAnimation{  
                    properties: "angle,x"  
                    duration: 300  
                }  
            }  
        ]  
    }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt QML仪表Demo是一个用于展示仪表效果的示例程序,通过使用Qt框架中的QML语言进行开发。QML是一种用于构建用户界面的声明式语言,它可以与C++代码无缝交互,并且可以跨平台运行。 这个仪表Demo通常包含一个圆形的仪表盘,上面显示着一些指针和刻度,用于表示某种状态或数值。这个示例程序可以用来演示一些实际应用场景,如车辆仪表盘、仪器仪表等。 在QML文件中,我们可以定义一个圆形的画布并在上面绘制各种图形元素。例如,我们可以添加一个圆形的外环作为仪表盘的边框,然后在中间添加一个圆形的刻度盘,并绘制出不同的刻度线。接着,我们可以添加指针和数字等元素,来显示具体的数值。 在QML中,我们可以使用一些内置的属性和表达式来实现各种动画效果。比如,我们可以定义一个动画来实现指针的旋转,使其根据仪表盘上的值进行相应的角度调整。还可以通过属性绑定来实时更新仪表盘的数值显示。 除了基本的仪表功能,我们还可以通过QML的扩展性来添加更多的交互功能。例如,通过添加鼠标事件处理器或触摸事件处理器,我们可以让用户通过拖动、滑动等方式来手动调整仪表盘的数值。 总之,Qt QML仪表Demo是一个通过使用Qt框架中的QML语言开发的示例程序,用于展示仪表效果。它可以帮助开发者更好地理解和学习QML的使用方法,并将其应用于实际项目中。 ### 回答2: Qt QML仪表Demo是一个使用Qt Quick绘制仪表盘界面的示例程序。QML是一种声明性语言,用于构建基于Qt的用户界面。 该示例程序展示了如何使用QML绘制一个具有平滑动画效果的仪表盘界面。在这个示例中,仪表盘界面由一个圆形背景、一个指针和一些标签组成。 首先,通过QML的绘图元素Path绘制一个圆形背景。可以设置背景的颜色、半径和边框。然后,使用Item元素嵌套一个Rectangle元素,用作指针。可以根据仪表盘当前值计算指针的角度,并将其旋转到正确的位置。 除了绘制背景和指针,示例中还包含一些标签,用于显示仪表盘的范围和单位。这些标签可以使用Text元素和属性绑定来实现。可以根据需要设置标签的颜色、大小和位置。 示例程序还包含一些动画效果,用于平滑地过渡指针的位置。可以使用Behavior元素和属性动画来定义这些效果。例如,可以定义一个角度动画,使指针在数值改变时顺时针或逆时针旋转到新的位置。 为了实现用户交互,示例程序还使用了一些QML的交互元素,如Slider和Button。可以通过Slider来改变仪表盘的数值,从而实现指针的动态变化。而Button可以用于重置仪表盘的数值。 综上所述,Qt QML仪表Demo是一个使用Qt Quick绘制仪表盘界面的示例程序,通过展示QML的绘图元素、属性绑定、动画效果和用户交互来实现这个功能。 ### 回答3: Qt QML仪表Demo是一个基于Qt Quick和QML语言编写的示例应用程序,用于展示仪表盘的功能和样式。 该示例应用程序主要由以下几个部分组成: 1. 仪表盘组件:通过使用Qt Quick Controls组件库中的样式,可以创建一个美观和交互性强的仪表盘界面。例如,可以使用圆形进度条来显示速度、转速等信息,并使用指针在刻度上指示当前数值。 2. 数据模型:为了展示仪表盘的功能,需要使用数据模型来模拟一些实际的数值。可以创建一个虚拟的数据模型,包含一些属性,如速度、转速等,并使用属性绑定机制将这些属性与仪表盘组件上的对应属性绑定起来。 3. 用户交互:通过用户交互,可以实现一些仪表盘的交互功能。例如,可以通过滑动或点击来改变仪表盘上的数值,或者通过A/B按钮来切换仪表盘的显示模式。 4. 动画效果:使用Qt Quick的动画系统,可以为仪表盘组件添加一些动画效果。例如,在数值变化时可以添加一个渐变动画效果,使仪表盘的指针从一个数值平滑过渡到另一个数值。 Qt QML仪表Demo不仅可以作为一个示例应用程序来展示如何创建仪表盘界面,还可以作为一个基础框架,用于开发具有仪表盘功能的实际应用程序。通过修改和扩展仪表盘组件、数据模型和用户交互等部分,可以满足不同应用场景的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值