2015-09-29 4 views
5

В QML, это легко написать создать привязку свойство, например:Как создать привязку свойства в Qt/C++?

Rectangle { 
    width: parent.width 
} 

Можно ли это сделать в C++ тоже?

+0

Для этого нет C++ API, вы должны сделать соединение с сигналом widthShanged от родителя, чтобы сказать lambda, который устанавливает ширину в ширину родителя. – dtech

ответ

4

В Qt, некоторые QObject s имеют определенное properties, которые могут быть «связаны» с использованием сигналов и слотов:

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

Помимо этого, вы можете подключаться другие сигналы и слоты, даже если они не являются связанных со свойствами.

Я должен указать, что для этого не существует синтаксического сахара. См. properties documentation для получения дополнительной информации.

Смежные вопросы