Russian Qt Forum
Сентябрь 30, 2024, 14:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableView::installEventFilter - не ловится QEvent::MouseMove  (Прочитано 5907 раз)
spectre71
Гость
« : Май 28, 2009, 14:37 »

TableView->setMouseTracking(true);
TableView->installEventFilter (new TMMW(TableView));

Вернее ловится но раз из 100-1000!

Код
C++ (Qt)
class TMMW : public QObject
{
   Q_OBJECT
 
public:
 TMMW(QObject *parent) : QObject(parent) {}
 virtual ~TMMW() {}
 
 virtual bool eventFilter ( QObject * watched, QEvent * event);
};
 
bool TMMW::eventFilter (QObject * watched, QEvent * event) {
 QAbstractItemView* View = qobject_cast<QAbstractItemView*>(watched);
 if(!View) {return false;}
 if (event->type() == QEvent::MouseMove) {
   QMessageBox msgBox;
   msgBox.setText("QEvent::MouseMove");
   msgBox.setIcon(QMessageBox::Information);
   msgBox.exec();
 }  
 return false;
}
 
 
Записан
drsm
Гость
« Ответ #1 : Май 28, 2009, 15:18 »

как-то так наверн:
TableView->viewport()->installEventFilter (new TMMW(TableView));
Записан
spectre71
Гость
« Ответ #2 : Май 28, 2009, 16:15 »

Спасибо!
Вот что получилось:

Код
C++ (Qt)
TableView->viewport()->setMouseTracking(true);
TableView->viewport()->installEventFilter(new TMMW(TableView));
 
bool TMMW::eventFilter (QObject * watched, QEvent * event) {
 QWidget* Widget = qobject_cast<QWidget*>(watched);
 if(!Widget) {return false;}
 QAbstractItemView* View = qobject_cast<QAbstractItemView*>(Widget->parent());
 if(!View)   {return false;}
 if (event->type() == QEvent::MouseMove) {
   QMouseEvent* e = (QMouseEvent*)event;
   QModelIndex ModelIndex = View->indexAt(e->pos());
   if(ModelIndex.column() != 1 || ModelIndex.row() != 4) {return false;}
   QMessageBox msgBox;
   msgBox.setText("QEvent::MouseMove");
   msgBox.setIcon(QMessageBox::Information);
   msgBox.exec();
 }  
 return false;
}
 
« Последнее редактирование: Май 28, 2009, 16:17 от spectre71 » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.095 секунд. Запросов: 21.