Чтение размера QML элемента, определенного anchors.fill: parent

Я пишу QML расширение плагин и я ищу способ получить доступ к размеру элемента, который я только что реализовал.

Сейчас новый элемент (названный CustomElement) может быть создан с любым размером по желанию пользователя путем определения значений width и height, так что в QML-файле пользователь может сделать следующее:

CustomElement 
{
     id: my_elem
     width: 800
     height: 600
}

Но я хотел бы иметь возможность получать информацию о размере, когда пользователь настраивает размер через якорь, например так:

Rectangle
{
    width: 800
    height: 600

    CustomElement 
    {
        id: my_elem
        anchors.fill: parent
    }
}

Я понятия не имею, как получить доступ к информации якоря.

Класс плагина определяется так:

class CustomElement: public QDeclarativeItem
{
    Q_OBJECT
    //Q_PROPERTY() stuff
public:
    // ...
};

В конструкторе плагина я установил QGraphicsItem::ItemHasNoContents в false:

CustomElement::CustomElement(QDeclarativeItem* parent)
: QDeclarativeItem(parent)
{
    qDebug() << "CustomElement::CustomElement parent is:" << parent;

    setFlag(QGraphicsItem::ItemHasNoContents, false);
}

После добавления отладки я заметил, что parent равен 0, что объясняет, почему я не могу получить полезную информацию с помощью boundingRect() и других методов. Видимо, проблема в том, что у моего плагина нет родителя. Как мне решить эту проблему?

7
задан karlphillip 25 November 2011 в 19:08
поделиться