Qt QML:如何自定义组件并在同一文件中使用它

Qt QML:如何自定义组件并在同一文件中使用它,qt,user-interface,qml,qtquick2,Qt,User Interface,Qml,Qtquick2,QML中是否有一些语法可以在同一个文件中定义和使用这样的组件 import QtQuick 2.6 import QtQuick.Window 2.2 var MyButton = Rectangle { width : 100; height : 60; color : "red" } // define it Window { visible: true MyButton // use it } 您不能直接使用内联组件,但可以使用加载程序: Component {

QML中是否有一些语法可以在同一个文件中定义和使用这样的组件

import QtQuick 2.6
import QtQuick.Window 2.2

var MyButton = Rectangle { width : 100; height : 60; color : "red" } // define it

Window {
    visible: true
    MyButton // use it
}

您不能直接使用内联组件,但可以使用加载程序:

Component {
  id: btn
  Button { width = 100; height = 60; background = "red" }
}

Loader {
  sourceComponent: btn
}
另一个缺点是不能直接为创建的对象指定属性

您还可以将组件用作视图和中继器等的委托

这是QML最大的遗漏之一。

由@dtech提供动力

import QtQuick 2.6
import QtQuick.Window 2.2

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

    Component { id: btn; Rectangle { width : 100; height : 100; color : "red" } }

    Column {
        spacing: 10
        Loader { sourceComponent: btn }
        Loader { sourceComponent: btn; width: 300 }
        Loader { sourceComponent: btn; width: 1000 }
    }
}
结果是:


成功了。我可以自定义按钮的宽度。看我在这个问题下面的截图。这个技巧对于大小是有效的,因为在那个特定的场景中,物品将填充加载器,但仅此而已。例如,不能直接设置信号处理程序,必须使用
Connections
元素。