QML 从单击的矩形缩放到另一个 UI 元素

Posted

技术标签:

【中文标题】QML 从单击的矩形缩放到另一个 UI 元素【英文标题】:QML zoom from a clicked rectangle to another UI element 【发布时间】:2012-06-08 16:33:09 【问题描述】:

我在带有Repeater 的主QML 表单上有9:9 的矩形元素矩阵。我想要实现的是,如果用户单击其中一个矩形,它会缩放到 TextEdit 小部件,按 Esc 键会缩小。

    QML 可以吗? 如果是,我应该如何将 Rectangle 转换为 TextEdit 并缩放此 TextEdit 以填充父级?

刚开始使用 QML,还不能从 http://doc.qt.nokia.com/4.7-snapshot/qdeclarativeanimation.html 得到答案。

谢谢。

【问题讨论】:

【参考方案1】:

1) 没问题!这或多或少是 QML 的用途。

2) 这是一个如何做你想做的事的例子(不是唯一的方法):

Rectangle 
  id: parentRect
  width: 500; height: 500

  // Every item in the grid should look like this
  Rectangle 
    id: singleItem
    color: "red"
    state: "closed"


    // Hidden text input, shown when user clicks
    TextInput 
      id: textInput
      anchors.fill: parent
      text: "Input here"
      cursorVisible: true
    

    // MouseArea that will catch the user click
    MouseArea 
      anchors.fill: parent
      onClicked: singleItem.state = "open"
    

    // Item states
    states: [
      State 
        name: "closed"
        PropertyChanges target: singleItem; width: 25; height: 25
        PropertyChanges target: textInput; opacity: 0
      ,
      State 
        name: "open"
        PropertyChanges target: singleItem; width: parentRect.width; height: parentRect.height
        PropertyChanges target: textInput; opacity: 1; focus: true
      
    ]

    // Transitions between states
    transitions: Transition 
      ParallelAnimation 
        NumberAnimation 
          target: singleItem
          properties: "width,height"
          duration: 1000
        
        NumberAnimation 
          target: textInput
          property: "opacity"
          duration: 1000
        
      
    
  


【讨论】:

【参考方案2】:

即使我是 qt-quick 的新手。我认为除非我们编写代码来进行缩放,否则不可能进行缩放。不过我不确定。 :-)

这个效果很好,很高兴在未来的版本中看到。尝试向社区提出功能请求

【讨论】:

以上是关于QML 从单击的矩形缩放到另一个 UI 元素的主要内容,如果未能解决你的问题,请参考以下文章

QML ListView:检测到属性“高度”的绑定循环

矩形选择器在缩放时消失

Qt3D:如何将 Scene2D 缩放为与窗口相同的大小(逐像素)?

Unity UI 缩放和实例化预制件

在没有viewBox的情况下围绕中心缩放?

如何通过按下和拖动在 Qt Quick/QML 画布中绘制一个矩形