我对 Qt 很陌生,所以我可能会问一个非常明显的问题。
我想为我想用 C++ 创建的所有自定义 QML GUI 元素创建一个超级类型。这个超类型应该为 QML 项目添加预定义的状态。与此类似:
import StatedGuiElement 1.0
import QtQuick 2.0
Item {
width: 300; height: 200
StatedGuiElement {
id: aStatedGuiElement
anchors.centerIn: parent
width: 100; height: 100
//some visible Custom Gui Elements
states:[
State {
name: "A_STATE"
},
State {
name: "ANOTHER_STATE"
}]
}
我知道如何从本教程(http://doc.qt.io/qt-5/qtqml-tutorials-extending-qml-example.html)创建一个简单的自定义项。我猜这些状态可以通过在继承自QQuickItem
. 然而,本教程并未展示如何创建更复杂的 Qt Quick 元素,例如状态列表。
class StatedGuiElement : public QQuickItem
{
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE setName)
//pass States via Q_PROPERTY?
public:
//define Enum for fixed States here?
//ENUM STATES {A_STATE, ANOTHER_STATE}
StatedGuiElement( QQuickItem *parent = 0);
QString name() const;
void setName(const QString &name);
private:
QString m_name;
//Some List of States?
signals:
public slots:
};
所以我想知道的问题如下:
- 甚至可以预定义 QML 状态类型并在多个元素中使用它们吗?
- 如何在 C++ 类中添加复杂的 QML 类型,例如状态列表
StatedGuiElement
?