View Full Version : disabling mouse event
elessaar
11th September 2008, 12:24
is it possible to disable mouse enter and leave events
jacek
11th September 2008, 19:51
You can use an event filter to filter them out.
elessaar
16th September 2008, 12:36
i tried that. i have my own label classes. and im drawing graphs on that labels.
when mouse enter and leave events happens on those labels, paint event still being called. but i want the paint event to be called only with my signal.
in constructor:
emi_label->installEventFilter(this);
gpr_label->installEventFilter(this);
bool mainWidget::eventFilter(QObject *obj, QEvent *event)
{
if(event->type() == QEvent::Enter || event->type() == QEvent::Leave){
if(obj == this){
qDebug("warning: main event");
}
if(obj == emi_label){
qDebug("warning: emi event");
}
if(obj == gpr_label){
qDebug("warning: gpr event");
}
}
return false;
}
event catches are right as far as i can see. i see expected warnings on terminal
///////////////////////////////////////////////////////////////////////////////////////////////////////////
void gprLabel::update_gui(){
if(is_gpr_data_ready){
for(int i=101;i<=228;i++){
gpr_matrix[gpr_matrix_index][i-101] = rand()%256;
}
gpr_matrix_index++;
is_gpr_data_ready = 0;
}
if(gpr_matrix_index == vWIDTH ){
gpr_matrix_index = 0;
is_ready_to_draw = 1;
update();
}
}
as u see i want gpr_label to be updated only with my call. how can do that
SASA
16th September 2008, 13:11
Assistant:
if you want to filter the event out, i.e. stop it being handled further, return true;
bool mainWidget::eventFilter(QObject *obj, QEvent *event)
{
if(event->type() == QEvent::Enter || event->type() == QEvent::Leave)
{
if(obj == this)
{
qDebug("warning: main event");
}
if(obj == emi_label)
{
qDebug("warning: emi event");
return true;
}
if(obj == gpr_label)
{
qDebug("warning: gpr event");
return true;
}
}
return QMainWindow::eventFilter(obj, event);
}
elessaar
17th September 2008, 06:36
when i do that, my labels become invisiable. i dont see any of them.
also im getting error if i use QMainWindow::eventFilter(). "cannot call member function without object..."
aamer4yu
17th September 2008, 07:06
Is your mainwidget derived from QMainWindow ??
Also why do u want to call other eventfilter from ur filter ?
just return true or false
elessaar
17th September 2008, 08:42
i was referring to the code above my last post.
the important thing now is if i return true my labels become invisible.
aamer4yu
17th September 2008, 09:03
I guess I am missing something in understanding ur problem...
u want to paint only when ur signal is emitted, right ? You can hold a variable and update it on the signal emitted. Use this variable in paint event.
May be i am wrong in understanding..
can u tell me if i am getting ur prob right.. cud u please explain a bit more of what u actually wanna do ?
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions Inc. All rights reserved.