Я пробовал много способов получить предложения по дополнению кода.
Если мои коды QML:
var a = CustomClass;
a.value = 45; // code completer work but qml error TypeError: Type Error
Я использую эту функцию:
var a = CustomClass.newCustomClass();
a.value = 45; // this success with no error but "value" member I typed manually.
Это вызывает большую проблему, если CustomClass
имеет много членов или атрибутов. Я должен смотреть на определение и объявление класса для каждого члена объекта класса, если я не могу вспомнить, и поэтому моя работа замедляется.
C ++:
class CustomClass : public QObject
{
Q_OBJECT
Q_PROPERTY( QString value READ value WRITE setValue )
public:
CustomClass(){}
Q_INVOKABLE static QVariant* newCustomClass(){ return QVariant::fromValue(new CustomClass());}
QString value() const { return mValue; }
void setValue(const QString& value){ this->mValue = value;}
private:
QString mValue;
}
QML-код:
import com.customType 1.0
Component.onCompleted: {
var size = Qt.size( 1 , 2 );
size.width = 5; //-> code completer work if typed (ctrl+space). ctrl+space offer me two variable width ve height
var element = CustomClass.newCustomClass();
element.value = 77; // code completer does not work.
Основная функция:
qmlRegisterType<CustomClass>("customclass", 1, 0, "CustomClass");