1
A
回答
0
恐怕这是你在想它可能不是那么简单。
据我所知,你有两个选择:
1.-请您将通过@BaCaRoZzo提供的link看到并实施your own object type的建议。
2.-在C++中编写更复杂的QML类型并将其用于您的QML文件。或多或少的@folibis指出的想法。例如:
的main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtQml>
#include "customitem.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
qmlRegisterType<CustomItem>("CustomItem", 1,0, "CustomItem");
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
customitem.h
#ifndef CUSTOMITEM_H
#define CUSTOMITEM_H
#include <QObject>
class CustomItem: public QObject
{
Q_OBJECT
/*
* Any property that is writable should have an associated NOTIFY signal.
* Ref: http://doc.qt.io/qt-5/qtqml-cppintegration-exposecppattributes.html#exposing-properties
*/
Q_PROPERTY(int x READ x WRITE setX NOTIFY xChanged)
Q_PROPERTY(int y READ y WRITE setY NOTIFY yChanged)
public:
CustomItem(QObject *parent = 0);
int x() const;
void setX(int);
int y() const;
void setY(int);
private:
int m_x;
int m_y;
signals:
void xChanged();
void yChanged();
public slots:
};
#endif // CUSTOMITEM_H
customitem.cpp
#include "customitem.h"
CustomItem::CustomItem(QObject *parent)
: QObject(parent), m_x(0), m_y(0)
{
}
int CustomItem::x() const
{
return m_x;
}
void CustomItem::setX(int x)
{
m_x = x;
}
int CustomItem::y() const
{
return m_y;
}
void CustomItem::setY(int y)
{
m_y = y;
}
main.qml
import QtQuick 2.5
import QtQuick.Window 2.2
import CustomItem 1.0
Window {
visible: true
CustomItem {
id: customItem
x: 50
y: 50
}
Rectangle {
id: rect
x: customItem.x
y: customItem.y
width: 100; height: 100
color: "red"
}
}
相关问题
- 1. QML自定义属性
- 2. 自定义与非自定义属性?
- 3. 自定义属性
- 4. 自定义属性
- 5. 自定义属性
- 6. 自定义属性
- 7. 自定义属性
- 8. 自定义属性
- 9. 自定义属性
- 10. QML:无法读取属性未定义
- 11. 自定义属性未定义
- 12. IMG定义自定义属性
- 13. xhtml自定义属性定义
- 14. 在Eloquent中定义自定义属性
- 15. 在CIL中定义自定义属性
- 16. android在自定义视图上并排定义属性和自定义属性
- 17. Custom ExtJs组件的自定义属性
- 18. 自定义组件属性类型
- 19. 自定义组件必需属性
- 20. 字符串数组自定义属性
- 21. Netbeans自定义组件属性
- 22. 在自定义组件属性
- 23. 自定义控件中的组属性
- 24. Android自定义组件属性
- 25. 自定义控件中的属性组
- 26. 自定义组件属性LiveBindings
- 27. QML:自定义光标
- 28. QML中的自定义FileDialog
- 29. QML自定义布局
- 30. QML StackView自定义转换
我想只有在C++中才有可能 – folibis