Функция для копирования свойств объектов
Функция, копирующая свойства объектов Qt. Объект-источник и объект-приемник могут принадлежать разным классам. Функция пытается скопировать значения свойств с совпадающими именами. Наглядно демонстрирует принципы работы с мета-объектами.
#include <QObject>
#include <QMetaObject>
#include <QStringList>
#include <QVariant>
#include <QMetaProperty>
void copyProperties(QObject * to, QObject * from)
{
const QMetaObject * metaTo = to->metaObject();
const QMetaObject * metaFrom = from->metaObject();
QStringList toProperties;
for (int i = 0; i < metaTo->propertyCount(); i++) {
if (metaTo->property(i).isWritable())
toProperties.append(QString::fromAscii(metaTo->property(i).name()));
}
for (int i = 0; i < metaFrom->propertyCount(); i++) {
if (toProperties.contains(QString::fromAscii(metaFrom->property(i).name())))
to->setProperty(metaFrom->property(i).name(), from->property(metaFrom->property(i).name()));
}
}
Пример использования:
copyProperties(ui->label, ui->lineEdit);