Sobrecargas de Qt / Qml e método
Acabei de encontrar um comportamento estranho da estrutura Qt, invocando métodos C ++ sobrecarregados de dentro do Qml e tentando entender o motivo por trás disso. Digamos que eu tenho umQList<QVariant>
classe-like com os seguintes métodos:
...
Q_SLOT void append(const QVariant &item);
Q_SLOT void append(const QVariantList &items);
Q_SLOT void insert(int index, const QVariant &item);
Q_SLOT void insert(int index, const QVariantList &items);
...
Qml:
onclicked: {
var itemCount = myListObject.size();
myListObject.insert(itemCount, "Item " + (itemCount + 1));
}
Qt de alguma forma decide invocar ovoid insert(int index, const QVariantList &items)
sobrecarga comitems
argumento definido comoa null QVariant
um vazioQVariantList
ao invés devoid insert(int index, const QVariant &item)
sobrecarga comQString
embrulhado emQVariant
.
Agora, se eu alterar a ordem das declarações da seguinte maneira, funcionará conforme o esperado:
Q_SLOT void insert(int index, const QVariantList &items);
Q_SLOT void insert(int index, const QVariant &item);
Não foi possível encontrar nada na documentação da estrutura Qt sobre a ordem das declarações e como isso afeta a maneira como os métodos são resolvidos durante a chamada.
Alguém pode me explicar? Obrigado.