QT事件

QT事件总要分为:

一。鼠标事件。

void mousePressEvent(QMouseEvent *e);  //鼠标按下事件,能过滤到鼠标按下那时的状态,里面可以再写事件处理机制。

void mouseMoveEvent(QMouseEvent *e); //能监控到鼠标移动状态。

void mouseReleaseEvent(QMouseEvent *e); //按鼠标按下后,还原时,可以监控到。

void mouseDoubleClickEvent(QMouseEvent *e); //双击鼠标事件

这几个函数,都是重写父类的, 父类里面为虚函数, 可以实现多肽。

重写时,可以实现对应状态下面的功能。

void Test::mousePressEvent(QMouseEvent *e)

{

if(e->button() == Qt::LeftButton) { //当按下的是鼠标左键时处理以下功能。

function();

} else if (e->button == Qt::RightButton) {//当按下的是鼠标左键时处理以下功能。

function2();

}

}


二。键盘事件。

void keyPressEvent(QKeyEvent *e);

键盘事件是可以监控到按下的是哪一个键的。

void Test::keyPressEvent(QKeyEvent *e)

{

if(e->key() == Qt::Key_Up) //如果按下的是上键。

{

function();

}

}


三,事件过滤器。

事件过滤器首先是需要在某个控件上面安装的, 如果不安装是没法使用的,或者说是监控不到这个控件的。

安装方法是:

控件名->installEventFilter(this);

安装之后是需要一个函数一直监控的, 这个函数就是:

bool eventFilter(QObject* watched, QEvent *event);

里面的watched 代表着监控的对像, 也就是我们安装了过滤器的控件, event代表着过滤的事件。

如:

bool Test::eventFilter(QObject* watched, QEvent *event)

{

if(watched == ui->label) {

if(event->type() == QEvent::MouseButtonPress) {

QMouseEvent *mouseEvent = QMouseEvent*(event);

if(mouseEvent->button() == Qt::RightButton) {

function();

}

}

}









你可能感兴趣的:(事件,qt)