Добрый день!
Из документов Qt 4.7.3 не ясно, могут ли свойства вызываться с использованием QMetaObject :: invokeMethod () или нет.Но что действительно странно, что оба вызова потерпели неудачу:
class A : public QObject
{
Q_OBJECT
public:
Q_PROPERTY( int value READ value )
int value() { return 0; }
Q_PROPERTY( int invokableValue READ invokableValue )
Q_INVOKABLE int invokableValue() { return 0; }
};
...
int returnValue;
QMetaObject::invokeMethod( aPtr, "value"
, Q_RETURN_ARG( int, returnValue ) );
QMetaObject::invokeMethod( aPtr, "invokableValue"
, Q_RETURN_ARG( int, returnValue ) );
Это означает, что Q_PROPERTY запрещает использование Q_INVOKABLE.
Давайте посмотрим a_moc.cpp:
if (_c == QMetaObject::InvokeMetaMethod) {
// no calls here
}
#ifndef QT_NO_PROPERTIES
else if (_c == QMetaObject::ReadProperty) {
void *_v = _a[0];
switch (_id) {
case 0: *reinterpret_cast< int*>(_v) = value(); break;
case 1: *reinterpret_cast< int*>(_v) = invokableValue(); break;
}
Iдумаю, пришло время сообщить об ошибке и запросе функции, но, может быть, каким-то образом эти проблемы могут быть решены?
ОБНОВЛЕНИЕ:
Ошибка сообщение .
Предложение * 1020 сообщили *.