Reputation: 5530
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?
Upvotes: 7
Views: 6651
Reputation: 1801
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++.
Upvotes: 2
Reputation: 2718
In Qt, some QObject
s 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.
Upvotes: 7