我正在尝试为Qt创建一个GUI测试库。该库旨在远程工作,以便我可以通过WiFi在移动设备上运行测试。它应该只为可见元素的功能提供API。
它应该是可扩展的。在Qt中,任何可见的GUI元素都是QWidget
的子类。我可以对QPushButton
(例如点击)或QLineEdit
(写文本)进行硬编码处理,但请注意用户可以定义自己的QWidget
子类,其中一些可能完全代表新的GUI。
在Java中,我可以解决这个问题,因为类类型本质上是Class
类型的变量。所以我可以:
public static void registerTestingHandler(Class<? extends java.awt.Component> GUIObject, Class<? extends TestingApi> apiHandler) {
...
}
TestingApi
将是一些接受消息作为字符串的基本接口,例如:handler.doAction("click");
C ++没有这种反思。我还了解到,获取可用于此目的的类'构造函数地址是不可能的。我认为整个设计应该在C ++中看起来不同。
因此问题是:如何允许用户为特定的类实例注册抽象处理程序?