2014-09-25 181 views
0

我在QML(QtQuick 1.0)中有一個圖像對象,它的高度必須是相對的(在窗口縮放的情況下),但問題是當我嘗試以全尺寸顯示這個圖像時。請看看我的代碼如下部分:QML改變圖像大小

Image { 
     id: selectionDialogImage 
     source: "qrc:/Images/myImage.png" 
     property int oldHeight: sourceSize.height 
     sourceSize.height: testsList.height/3 
     scale: 1 
     anchors.bottom: parent.bottom 
     anchors.left: parent.left 
     visible: false 
     property bool imageFullsize: false 
     MouseArea { 
       anchors.fill: parent 
       onClicked: 
        { 
        if(parent.imageFullsize) 
        { 
         parent.parent = selectionDialogQuestionText; 
         parent.sourceSize.width = undefined; 
         parent.sourceSize.height = testsList.height/3; 
         parent.anchors.horizontalCenter = undefined; 
         parent.anchors.verticalCenter = undefined; 
         parent.anchors.left = selectionDialogQuestionText.left; 
         parent.anchors.bottom = selectionDialogQuestionText.bottom; 
         parent.imageFullsize = false; 
        } 
        else 
        { 
         parent.parent = mainItem; 
         parent.sourceSize.height = parent.oldHeight; 
         //parent.sourceSize.height = undefined; 
         parent.sourceSize.width = mainItem.width; 
         parent.anchors.horizontalCenter = mainItem.horizontalCenter; 
         parent.imageFullsize = true; 
        } 
        } 
       } 
     } 

selectionDialogQuestionText是我的形象項的默認父。 mainItem是最大的項目,它具有整個窗口的大小。所以我希望在全屏顯示時根據寬度設置圖像大小,但在另一種狀態下,我想縮放設置其高度的圖像。

當我設置parent.sourceSize.width = mainItem.width;時,圖像沒有縮放,但其高度與之前(非常小)不同,因此其比例不合適。

我可以以任何方式存儲舊高度的源圖像嗎?我需要類似const的東西,因爲property int oldHeight: sourceSize.heigh是相對的。或者有沒有辦法恢復圖像的默認大小,然後設置高度/寬度?

更新#1: 我試圖用由@米奇描述的方法:

property int oldHeight 
Component.onCompleted: { 
    oldHeight = sourceSize.height 
    } 
    sourceSize.height: 250 

console.log("oldHeight="+parent.oldHeight)下面幾行示出了oldHeight=250,不是原來的高度。

+0

你可以提供你想要做什麼說明?你的問題很難遵循。 – Mitch 2014-09-25 08:11:50

回答

1

我可以以任何方式存儲舊圖像高度的源圖像嗎?

您可以使用Component.onCompleted

Image { 
    // ... 
    Component.onCompleted: { 
     oldHeight = sourceSize.height 
    } 
} 
+0

它不起作用。在第一篇文章中查看我的更新。 – trivelt 2014-09-25 08:32:36

+1

如果你設置'sourceSize.height:250',那麼它總是250,因爲在'Component.onCompleted'運行之前評估它。您應該在'Component.onCompleted'結尾處設置'sourceSize.height = 250'。 – Mitch 2014-09-25 12:27:51

+0

是的,謝謝。我前段時間瞭解它,但它並沒有解決我的問題,原因是'sourceSize.height'的原始值是...奇怪。最後,我沒有調整圖像大小,而是創建了另一個Rectangle(包含Image {})作爲mainItem(根元素)的子元素。所以''onClicked'我只有'imageFullscreenBox.imgSource = parent.source;'和'imageFullscreenBox.visible = true;' – trivelt 2014-09-25 13:05:35