gpt4 book ai didi

c++ - 如何在 Qt 中监听 QDynamicPropertyChangeEvent 来检测属性变化?

转载 作者:搜寻专家 更新时间:2023-10-31 01:37:20 24 4
gpt4 key购买 nike

我需要更新一些基于 Qt QObject 动态属性变化的东西。动态属性是那些由字符串名称索引的 QVariant 值 - 可以设置为任何 QObject

最初我打算简单地覆盖我的 QObject 子类上的 setProperty 方法,但是当我阅读 documentation on setProperty 时,我注意到了这一点:

Changing the value of a dynamic property causes a QDynamicPropertyChangeEvent to be sent to the object.

好吧,那很好,但我记得我已经查看过过去并没有在 QObject 中找到该事件的信号。我又看了一遍 it's indeed not there .

那么事件是通过什么方式发送的,我该如何捕捉它?

最佳答案

只需继承您的 QObject 子类并覆盖 event:

class MyObject : public SomeQObjectSubclass
{
protected:
bool event(QEvent *e) override {
if (e->type() == QEvent::DynamicPropertyChange) {
QDynamicPropertyChangeEvent *pe = static_cast<QDynamicPropertyChangeEvent *>(e);
// do something with it
return true; // if you handled it and want to stop further handling
}
return SomeQObjectSubclass::event(e); // don't forget this
}
}

另见 here .

关于c++ - 如何在 Qt 中监听 QDynamicPropertyChangeEvent 来检测属性变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34286495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com