Любому пользовательскому типу в QML можно прописать набор произвольных сигналов, которые он может испускать. Делается это с помощью ключевого слова signal примерно так:
Rectangle {
id: Button
property color buttonColor: "yellow"
signal buttonPush()
signal buttonDrop()
...
}
Для того, чтобы испустить сигнал, надо просто вызвать его как функцию в любой части кода данного пользовательского типа:
buttonPush();
Отдельно надо разобраться, как описывать сигналы с параметрами.