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();
}
}
}
}