【发布时间】:2016-11-29 20:56:23
【问题描述】:
我对 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 的 C++ 类中的枚举来定义状态。但是,本教程并未展示如何创建更复杂的 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 状态类型并在多个元素中使用它们吗?
- 如何在
StatedGuiElement等 C++ 类中添加复杂的 QML 类型(如状态列表)?
【问题讨论】:
标签: c++ qt qml qtquick2 qquickitem