Qml定义自定义属性组

Qml定义自定义属性组,qml,qt5,Qml,Qt5,如何在qml中定义自定义特性组(与anchors特性相同) 用法示例: Item { anchors { leftMargin: 5 rightMargin: 5 } } 恐怕这并不像你想象的那么简单 据我所知,你有两个选择: 1.-遵循@BaCaRoZzo提供的建议并实施 2。-在C++中编写更复杂的QML类型并将其用于QML文件中。或多或少是@folibis指出的想法。例如: main.cpp #include <QGuiApplication> #i

如何在qml中定义自定义特性组(与anchors特性相同)

用法示例:

Item {
  anchors {
    leftMargin: 5
    rightMargin: 5
  }
}

恐怕这并不像你想象的那么简单

据我所知,你有两个选择:

1.-遵循@BaCaRoZzo提供的建议并实施

<> 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();
}
#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"
    }    
}

我想只有C++才有可能
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"
    }    
}