【问题标题】:Qt. Declare custom QEvent type ONCEQt。声明自定义 QEvent 类型 ONCE
【发布时间】:2012-01-04 03:18:54
【问题描述】:

我有一个包含这样代码的 .h 文件:

const QEvent::Type MyOnEventType =
           QEvent::Type(QEvent::registerEventType( QEvent::User + 500 ) );

此标头在应用程序中使用了两次。我发现一个问题,在不同的地方 MyOnEventType 有不同的整数值。如果在上面的代码上设置断点,调试器会停止 9 次。

请帮助如何声明自定义 QEvent 类型 ONCE

【问题讨论】:

    标签: qt qevent


    【解决方案1】:

    我不是 100% 确定我理解您的问题,但听起来您需要将声明和实现分开。比如:

    my_event.h

    class MyEvent : public QEvent {
     public:
      static const QEvent::Type MyEventType;
      // etc. 
    };
    

    my_event.cpp

    #include "my_event.h"
    
    const QEvent::Type MyEvent::MyEventType = 
            static_cast<QEvent::Type>(QEvent::registerEventType());
    
    // etc.
    

    【讨论】:

    • 我怎样才能达到 MyEvent::MyEventType 值以在其他模块中使用它?我的意思是进行类似 (some_int_variable == MyOnEventType) 的检查。
    • 他们会这样做some_int_variable == MyEvent::MyEventType
    • 谢谢! :) 调试器显示(通过转到断点) registerEventType 现在只调用一个。它终于可以正常工作了。
    • 对我来说也是一个大新闻,我们可以使用类内部字段 (MyEvent::MyEventType) 而无需使用该类的任何实例。
    • 这就是静态成员变量的全部意义所在。此外,如果它对你有用,你应该接受这个答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多