java .net MFC QT事件处理机制
2007-08-05 12:45
661 查看
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 );
}
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 );
}
相关文章推荐
- 用Java事件处理机制实现GUI录制回放功能
- java事件处理机制(自定义事件)
- java java事件处理机制 event
- java 事件处理机制:按下上下左右键控制小球的运动
- Java事件处理机制- 事件监听器的四种实现方式【转】
- Java的事件处理机制
- 浅析Java与C#的事件处理机制(转)
- Qt事件处理机制整个流程--以鼠标在一个窗口中点击为例
- Qt事件处理机制
- Java GUI编程中如何进行事件处理机制
- Java- 事件处理机制
- java学习(21)事件处理机制(1)
- Java事件处理机制与“恋爱关系”
- java 事件处理机制
- java事件处理机制
- 深入了解asp.net框架。生命周期以及事件处理机制
- java事件处理机制(自定义事件)
- 从零开始理解JAVA事件处理机制(2)
- Java事件处理机制- 事件监听器的四种实现方式
- Java中的事件处理与异常处理机制-解析