【问题标题】:Why is Qt looking for my slot in the base class instead of derived one?为什么 Qt 在基类而不是派生类中寻找我的插槽?
【发布时间】:2010-11-26 06:09:36
【问题描述】:

我有我的类X,它继承自Qt 的类Base。我在我的类X 中声明并定义了void mySlot() 插槽,并且我在X 的构造函数中将一些信号连接到这个插槽。但是,在运行我的程序时,我收到一条错误消息,指出 Base 类中没有 void mySlot() 这样的插槽。

为什么元对象编译器 (moc) 生成的代码在基类中而不是在我的(派生)类中寻找我的槽?

【问题讨论】:

    标签: c++ qt signals-slots


    【解决方案1】:

    您是否在派生类上添加了 Q_OBJECT 宏?

    【讨论】:

      【解决方案2】:

      来自#qt irc 频道

      1. 确保 Q_OBJECT 宏存在于所有 QObject 派生类的定义中。
      2. 确保仅在头文件中声明 QObject 派生类。
      3. 确保所有头文件都列在 .pro 文件的 HEADERS= 列表中。
      4. 每次将 Q_OBJECT 添加到类之一或修改 .pro 文件时运行 qmake。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-11
        • 1970-01-01
        • 2016-02-14
        • 1970-01-01
        • 2011-09-16
        相关资源
        最近更新 更多