Я довольно новичок в Qt, поэтому я, вероятно, задаю довольно очевидный вопрос.Как создать пользовательский Quick QML-элемент с предопределенными состояниями
Я хотел бы создать супер-тип для всех моих пользовательских элементов GUI GUI, которые я хочу создать на C++. Этот супер-тип должен добавлять предопределенные состояния к элементу 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). Я думаю, что состояния могут быть определены с помощью перечисления в классе C++, который наследуется от 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 и использовать их в нескольких элементов?
- Как добавить сложные типы QML, такие как State Lists в классе C++, например
StatedGuiElement
?