java .net MFC QT事件处理机制

java事件处理机制
1 开发自定义事件类。
public class PropertyEvent extends EventObject {
   public PropertyEvent(){}
}
2 定义监听者接口。
public interface PropertyListener extends EventListener {
   public void propertyChanged(PropertyEvent propertyEvent);
 }
3 定义事件激发者的接口。
    public void add监听者(监听者);
    public void remove监听者(监听者);
    protected void process事件(事件);
4 实现事件激发者.
5 实现监听这接口。

MFC实践处理
afx_msg void OnAppAbout();
DECLARE_MESSAGE_MAP()
BEGIN_MESSAGE_MAP(CTApp, CWinApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
END_MESSAGE_MAP()

c#中使用事件
1.创建一个委托 Public delegate void delegateMe(object param);
2.将创建的委托与特定事件关联 Public event delegateMe eventMe;
3.编写事件处理程序 public void Notify();NotifyEveryOne(); 
4.利用编写的事件处理程序生成一个委托实例 DelegateEvent eventSource = new DelegateEvent();
5.把这个委托实例添加到产生事件对象的事件列表中去,这个过程又叫订阅事件 eventSource.NotifyEveryOne +=new event_test.DelegateEvent.MyDelegate(objA.DispMethodA);
6.使用此事件 eventSource.Notify();
QT事件处理


当对象的内部状态发生改变,信号就被发射,在某些方面对于对象代理或者所有者也许是很有趣的。只有定义了一个信号的类和它的子类才能发射这个信号。
    class Foo : public QObject
    {
        Q_OBJECT
    public:
        Foo();
        int value() const { return val; }
    public slots:
        void setValue( int );//槽
    signals:
        void valueChanged( int );//信号
    private:
        int val;
    };
当一个和槽连接的信号被发射的时候,这个槽被调用。槽也是普通的C++函数并且可以像它们一样被调用;它们唯一的特点就是它们可以被信号连接。槽的参数不能含有默认值,并且和信号一样,为了槽的参数而使用自己特定的类型是很不明智的。
Foo a, b;
    connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int)));//连接
    b.setValue( 11 );
    a.setValue( 79 );
    b.value();
QT的消息处理过程
 bool MyClass:event( QEvent * e ) {
      if ( e-> type () == QEvent::KeyPress ) {
          QKeyEvent * ke = (QKeyEvent*) e;
          if ( ke-> key () == Key_Tab ) {
              // 这里是特定的tab处理
              k->accept();
              return TRUE;
          }
      } else if ( e-> type () >= QEvent::User ) {
          QCustomEvent * c = (QCustomEvent*) e;
          // 这里是自定义事件处理
          return TRUE;
      }
      QWidget:: event ( e );
  }
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值