0

我的 QML 应用程序的对话框中显示了一个图像,我希望稍后能够使用 onClicked 更改该图像,我通过一个函数来检查我想要在新源 URL 中的变量是否是其中之一我想要的他们。

我已经尝试过使用 Image.source = "NEWURL" 这是不行的。还有图像所在组件的 ID,以及如下对话框:id.source = "neurl" - 不行。

我怎么做?

编辑:添加了更多代码;函数和listitm都用来点击。该图像是一个网络图像,我希望在 url 中有 connectedUser 值(这是一个用户名)。

以下是所有相关代码:

// Check if users is really a user, and if; show skin
function checkCurrentUser(currentUser) {
    console.debug('Debug: Check user "'+currentUser+'" if actually a user.')

    if (currentUser == "Ingen online") {
        currentUser = "Notch" // reset currentUser if pushed earlier
        console.debug('Debug: It was not a real user. Showing '+currentUser+' instead')
        Image.source = "http://blabla"+currentUser+"yesyes"
    }
    else {
        console.debug('Debug: It was a real user.')
        Image.source = "http://blabla"+currentUser+"yesyes"
    }
    return "http://blabla"+currentUser+"yesyes""
}

            // the dialog I want to show with a image
            Component {
                 id: userDialog
                 Dialog {
                     id: dialogueUser
                     title: i18n.tr("Image")
                     Image {
                         id: usersSkin
                         fillMode: Image.PreserveAspectFit
                         source: "URL"
                         sourceSize.height: 1200
                     }

                     Button {
                         text: i18n.tr("Close")
                         color: "red"
                         onClicked: PopupUtils.close(dialogueUser)
                     }
                 }
                }

     // and then the list containting each link, which on click should show the user image
     ListView {
                    id: userList
                    width: parent.width
                    height: units.gu(5)
                    model: msmData
                    delegate: ListItem.Standard {
                        text: connectedUser
                        onClicked: {
                            console.debug('Debug: User clicked "'+connectedUser+'"')
                            checkCurrentUser(connectedUser)
                            PopupUtils.open(userDialog, userList)
                        }
                    }
                    header: ListItem.Header { text: i18n.tr("Connected Users") }
                    section.property: "type"
                    section.criteria: ViewSection.FullString
                    section.delegate: ListItem.Header { text: i18n.tr(section) }
                }
4

2 回答 2

0

我不确定我是否正确理解了您的问题,但我会尝试一下:

   Component 
   {
             id: userDialog
             Dialog 
             {
                 property int sourceState : 1
                 id: dialogueUser
                 title: i18n.tr("Image")
                 Image 
                 {
                     id: usersSkin
                     fillMode: Image.PreserveAspectFit
                     source: 1 == sourceState ? "OLDURL" : "NEWURL"
                     sourceSize.height: 1200
                 }

                 Button 
                 {
                     text: i18n.tr("Close")
                     color: "red"
                     onClicked: 
                     {
                        PopupUtils.close(dialogueUser)
                        dialogueUser.sourceState = 0                            
                     }
                 }
              }
    }
于 2013-05-10T05:52:12.297 回答
0

我最终所做的只是重置图像 URL 中的变量,然后显示对话框。现在工作。

于 2013-06-04T14:35:05.627 回答