2015-09-10 21 views
5

Próbuję wykonać bardzo prosty program, aby nauczyć się definiować niestandardowe typy QML do ponownego użycia. Nie wiem, dlaczego pojawia się następujący błąd:Nie można przypisać do nieistniejącej właściwości

Cannot assign to non-existent property "color"

Szukałem odpowiedzi i nie znalazłem niczego, co rozwiązałoby problem.

Poniżej znajduje się kod. Qt podkreśla color i radius na czerwono, co oznacza, że ​​jest oflagowany jako "niepoprawna nazwa właściwości".

//Button.qml 
import QtQuick 2.3 

Rectangle { 
width: 100; height: 100 
color: "red" 

    MouseArea { 
     anchors.fill: parent 
     onClicked: console.log("button clicked!") 
    } 
} 

//main.qml 
import QtQuick 2.3 
import QtQuick.Controls 1.2 

ApplicationWindow { 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 

    menuBar: MenuBar { 
     Menu { 
      title: qsTr("File") 
      MenuItem { 
       text: qsTr("&Open") 
       onTriggered: console.log("Open action triggered"); 
      } 
      MenuItem { 
       text: qsTr("Exit") 
       onTriggered: Qt.quit(); 
      } 
     } 
    } 

    Column { 
     Button {width: 50; height: 50} 
     Button { x: 50; width: 100; height: 50; color: "blue" } 
     Button { width: 50; height: 50; radius: 8} 
    } 

} 

Odpowiedz

4

Qt Quick Controls ma typ Button, podobnie jak Ty. Najwyraźniej wartość Button z importu Qt Quick Controls (która nie ma właściwości radius lub color) zostanie wybrana dla lokalnego pliku. Masz kilka opcji:

  1. Zmień nazwę swojego Button na coś innego.
  2. Importuj Qt Szybkie sterowanie do przestrzeni nazw.
  3. Zaimportuj swój typ do przestrzeni nazw.

Oto jak chcesz zrobić opcja # 2:

import QtQuick 2.3 
import QtQuick.Controls 1.2 as Controls 

Controls.ApplicationWindow { 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 

    menuBar: Controls.MenuBar { 
     Controls.Menu { 
      title: qsTr("File") 
      Controls.MenuItem { 
       text: qsTr("&Open") 
       onTriggered: console.log("Open action triggered") 
      } 
      Controls.MenuItem { 
       text: qsTr("Exit") 
       onTriggered: Qt.quit() 
      } 
     } 
    } 

    Column { 
     Button { 
      width: 50 
      height: 50 
     } 
     Button { 
      x: 50 
      width: 100 
      height: 50 
      color: "blue" 
     } 
     Button { 
      width: 50 
      height: 50 
      radius: 8 
     } 
    } 
} 
Powiązane problemy