In QML, it's easy write create a property binding, such as:
Rectangle { width: parent.width } Is it possible to do this in C++ too?
In QML, it's easy write create a property binding, such as:
Rectangle { width: parent.width } Is it possible to do this in C++ too?
In Qt, some QObjects have certain properties that can be "bound" using signals and slots:
auto *someWidget = QPushButton(/* ... */); auto *otherRelatedWidget = QLabel( /* ... */ ); // windowTitle is a property for both QWidgets QObject::connect(someWidget, &QWidget::windowTitleChanged, otherRelatedWidget, &QWidget::setWindowTitle); Apart from this, you can still connect other signals and slots, even if they're not associated to properties.
I've got to point out that there is no syntax sugar for doing this. See the properties documentation for more info.
In Qt6 you can use QProperty to achieve c++ property bindings.
Check out this blog post: https://www.qt.io/blog/property-bindings-in-qt-6
They're slightly different than QML binding since they execute lazily. QML binding execute eagerly on every signal. Under the hood QProperty uses thread local storage (TLS) to keep track of dependancies while executing value(). It's definitely an interesting piece of technology and adds a declarative programming paradigm to c++.