Qt / Qml и перегрузки методов
Просто столкнулся со странным поведением инфраструктуры Qt, вызывая перегруженные методы C ++ из Qml и пытаясь понять причину этого. Допустим, у меня естьQList<QVariant>
-подобный класс со следующими методами:
...
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 почему-то решает вызватьvoid insert(int index, const QVariantList &items)
перегрузка сitems
аргумент установлен вa null QVariant
пустойQVariantList
вместоvoid insert(int index, const QVariant &item)
перегрузка сQString
завернут вQVariant
.
Теперь, если я изменю порядок объявлений следующим образом, он будет работать как положено:
Q_SLOT void insert(int index, const QVariantList &items);
Q_SLOT void insert(int index, const QVariant &item);
Я не смог найти ничего в документации Qt Framework относительно порядка объявлений и того, как это влияет на способ, которым методы разрешаются во время вызова.
Может кто-нибудь объяснить, пожалуйста? Спасибо.