C ++ QQuickItem:如何触发项目大小更改的函数

时间:2018-04-05 08:36:34

标签: qt qml qtquick2

我在C ++中有一个QQuickItem,它在QML应用程序中实例化。如果我的QQuickItem的width属性发生变化,我想在c ++端触发自定义函数。

在QML中我会做onWidthChanged:{my code}。我怎样才能在c ++方面做到这一点?

2 个答案:

答案 0 :(得分:4)

如果您想在自定义QQuickItem中回复尺寸更改,请重新实施geometryChanged()功能。这样做的好处是不会为每个项目创建额外的signal-slot connections,如果您要连接到widthChanged() / heightChanged()信号,则必须这样做。

Here是Qt Quick Controls 2中重新实现它的一个例子。

答案 1 :(得分:1)

width qpropertywidthChanged信号,因此您可以将该信号连接到某个广告位。

class FooItem : public QQuickItem
{
    Q_OBJECT
public:
    FooItem(QQuickItem *parent=Q_NULLPTR): QQuickItem(parent){
        connect(this, &FooItem::widthChanged, this, &FooItem::onWidthChanged);
    }
    Q_SLOT void onWidthChanged(){
        qDebug()<<width();
    }
};

同样,其他属性包括heightxyz