2017-10-28 4 views
0

프로젝트에서 구성 요소를 사용하여 모눈 레이아웃의 일부 단추를 채울 수있었습니다. 하지만 단추에 스타일 구성 요소를 추가 할 수는 없습니다. 이건 내 코드입니다 :qml의 동적 단추로 스타일 시트가 작동하지 않습니다.

Component { 
    id: itemgroup 
    Button { } 
} 

function addButton() { 
    for(var i = 0 ; i < 10 ; i++) { 
    var button = itemgroup.createObject (gridX, { 
              "id": "btnitemgroup", 
              "style": buttonstyle, 
              "text" :"hai" 
             }); 
    } 
} 
+0

요구 사항은 무엇입니까? 함수 호출마다 'buttonstyle'을 변경해야합니까, 아니면 컴포넌트를 설정할 때 스타일을 설정하지 않는 또 다른 이유가 있습니까? Repeater를 사용하여 선언적 방식 대신 JS 함수를 사용하는 이유는 무엇입니까? – derM

+0

@derM JS 함수를 사용하는 특별한 이유가 없습니다. 그들 사이에 큰 차이가 있습니까 –

+0

JS 만든 개체가 가비지 수집됩니다. GC는 버그가 많으므로 축하를 피할 수 있습니다. 또한 스타일의 문제입니다 : QML은 선언적 언어이므로 좋은 스타일은 선언적으로 머물러 있습니다. 또한 복잡한 JS 표현식은 C++/QML/JS의 언어 스택에서 가장 느린 부분입니다. 최적화되지 않았고 런타임에 구문 분석되기 때문입니다. – derM

답변

0
import QtQuick 2.6 
import QtQuick.Window 2.2 
import QtQuick.Controls 1.3 
import QtQuick.Controls.Styles 1.3 

Window { 
    visible: true 
    width: 500 
    height: 500 
    id:root 
    Grid 
    { 
     id:gridX 
    } 
    function addButton (row) { 

     var styleButton = 'import QtQuick 2.6;import QtQuick.Controls 1.3 
      import QtQuick.Controls.Styles 1.3; Button { text:"hai"; style: ButtonStyle { 
      background: Rectangle { 
       implicitWidth: 100 
       implicitHeight: 25 
       border.width: control.activeFocus ? 2 : 1 
       border.color: "red" 
       radius: 10 
       } 
       } 
      }' 

     for(var i = 0 ; i < 10 ; i++) { 
      Qt.createQmlObject(styleButton, gridX); 
     } 
    } 
    Component.onCompleted: 
    { 
     addButton() 
    } 
} 

enter image description here