如何覆盖超类组件的信号处理程序

时间:2015-01-17 06:32:59

标签: qt inheritance qml handler qt-quick

我有一个像这样的基类项目:

.qml:

Item {
    Thing {
      id: theThing;

      onMySignal: { console.log("The signal"); }   
     }
}

我正在尝试制作一个衍生项目 - Derived.qml

如何覆盖onMySignal的{​​{1}}处理程序?我试过这样的东西......

派生 .qml:

theThing

但我找不到任何要告诉我如何正确表达这种语法,或者是否/如何实际表达它!

1 个答案:

答案 0 :(得分:6)

您可以将信号处理程序的代码定义为超类中的属性,并在派生项中覆盖它:

Item {
    property var handlerCode: function () { console.log("In Superclass") };

    Thing {
      id: theThing;

      onMySignal: handlerCode() 
     }
}

覆盖:

Base {
    handlerCode: function () { console.log("In Derived Item!") };
}