如何在Qt/C++中创建属性绑定?

Zen*_*Zen 7 c++ qt qml

在QML中,很容易编写创建属性绑定,例如:

Rectangle {
    width: parent.width
} 
Run Code Online (Sandbox Code Playgroud)

是否可以在C++中执行此操作?

Fel*_*ema 5

在Qt中,某些QObjects具有某些可以使用信号和槽"绑定"的属性:

auto *someWidget = QPushButton(/* ... */);
auto *otherRelatedWidget = QLabel( /* ... */ );
// windowTitle is a property for both QWidgets
QObject::connect(someWidget, &QWidget::windowTitleChanged,
                 otherRelatedWidget, &QWidget::setWindowTitle);
Run Code Online (Sandbox Code Playgroud)

除此之外,您仍然可以连接其他信号和插槽,即使它们与属性无关.

我必须指出,这样做没有语法糖.有关详细信息,请参阅属性文档.