首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt快速添加图像的梯度帧

Qt快速添加图像的梯度帧
EN

Stack Overflow用户
提问于 2015-04-17 15:20:05
回答 1查看 935关注 0票数 1

我正在使用Qt 5.4.1及其Qt Quick模块开发应用程序。我从.svg目录中加载了一些/images图片,然后在ListView中显示它们,这样就可以了。但是,如何在每个加载的.svg图像周围添加阴影梯度呢?这是妇女权利部:

代码语言:javascript
复制
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2

import Qt.labs.folderlistmodel 2.1

Rectangle
{
    id: ueMainWindow

    visible: true

    width: 800
    height: 1280

    color: "black"

    property string ueRootDirectory:"/images"
    property real ueImagesLoadProgress;
    property bool ueImageLoading;

    Rectangle
    {
        id: ueContainerThumbnails

        antialiasing: true

        color: "black"

        anchors.bottom: ueMainWindow.bottom
        width: ueMainWindow.width

        height: 256

        gradient: Gradient
        {
            GradientStop { position: 0.0; color: "black" }
            GradientStop { position: 1.0; color: "grey" }
        }

        Text
        {
            id: ueTextImageName

            antialiasing: true

            color: "white"

            anchors.horizontalCenter: ueContainerThumbnails.horizontalCenter

            text: qsTr("TestApp")
        }

        ListView
        {
            id: ueViewThumbnails

            antialiasing: true

            orientation: ListView.Horizontal

            anchors
            {
                topMargin: parent.height-(parent.height-50)
                fill: parent
            }

            FolderListModel
            {
                id: ueModelImages

                folder: "file://"+ueRootDirectory
                nameFilters: ["*.svg"]
            }

            Component
            {
                id: ueDelegateImage

                Image
                {
                    id: ueImage

                    source: ueModelImages.folder + "/" + fileName

                    antialiasing: true

                    asynchronous: true

                    horizontalAlignment: Image.AlignHCenter
                    verticalAlignment: Image.AlignVCenter

                    width: 192
                    height: 192

                    fillMode: Image.PreserveAspectFit
                }
            }

            focus: true
            spacing: 10
            leftMargin: 10
            rightMargin: 35
            visible: ueModelImages.status==FolderListModel.Ready

            model: ueModelImages
            delegate: ueDelegateImage
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-17 17:13:19

好吧,你应该在你的代表中加入这个梯度。你可以:

  • 创建一个空的Item并将RectangleImage放入其中

示例:

代码语言:javascript
复制
Component {
    id: ueDelegateImage
    Item { // container
        Rectangle {
            // gradient rectangle
        }
        Image {
            // image
        }
    }
}
  • 或者将Image放在Rectangle

示例:

代码语言:javascript
复制
Component {
    id: ueDelegateImage        
    Rectangle {
        // gradient rectangle acts as a container
        Image {
            // image
        }            
    }  
}

在这两种情况下,堆叠顺序将画出图像后面的梯度矩形。委托应该只有一个根元素,但不限于一个元素,您可以任意嵌套。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29703251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档