我在C ++中有一个QQuickItem,它在QML应用程序中实例化。如果我的QQuickItem的width属性发生变化,我想在c ++端触发自定义函数。
在QML中我会做onWidthChanged:{my code}。我怎样才能在c ++方面做到这一点?
答案 0 :(得分:4)
如果您想在自定义QQuickItem
中回复尺寸更改,请重新实施geometryChanged()
功能。这样做的好处是不会为每个项目创建额外的signal-slot connections,如果您要连接到widthChanged()
/ heightChanged()
信号,则必须这样做。
Here是Qt Quick Controls 2中重新实现它的一个例子。
答案 1 :(得分:1)
width
qproperty
是widthChanged
信号,因此您可以将该信号连接到某个广告位。
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();
}
};