Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Perchilla от Январь 16, 2005, 22:10



Название: QTextView: отлов события нажатия кнопки мыши
Отправлено: Perchilla от Январь 16, 2005, 22:10
Народ, поскажите как переопределить сигнал нажатия. У меня класс QTextView? делаю так:
Код:

bool VarBtn::event(QEvent *evn)
{
if (evn->type()==QEvent::MouseButtonRelease)
{
emit varPClick(varnum);
return true;
};
return QWidget::event(evn);
};

тут VarBtт - наследник QTextView, а varPClick(varnum) - это создаваемый сигнал.
Сигнал срабатывает, только при нажатии на границу виджета, а как отловить нажатие на рабочую область?


Название: QTextView: отлов события нажатия кнопки мыши
Отправлено: Admin от Январь 16, 2005, 23:19
я глянул в доку написано

Код:

bool QWidget::event ( QEvent * e ) [virtual protected]
This is the main event handler; it handles event e. You can reimplement this function in a subclass, but we recommend using one of the specialized event handlers instead.


как я понял рекомендуют воспользоватся

Код:
virtual void mousePressEvent ( QMouseEvent * e ) 
virtual void mouseReleaseEvent ( QMouseEvent * e )
virtual void mouseDoubleClickEvent ( QMouseEvent * e )
virtual void mouseMoveEvent ( QMouseEvent * e )


Название: QTextView: отлов события нажатия кнопки мыши
Отправлено: Perchilla от Январь 17, 2005, 00:19
Цитата: "Admin"
я глянул в доку написано

Код:

bool QWidget::event ( QEvent * e ) [virtual protected]
This is the main event handler; it handles event e. You can reimplement this function in a subclass, but we recommend using one of the specialized event handlers instead.


как я понял рекомендуют воспользоватся

Код:
virtual void mousePressEvent ( QMouseEvent * e ) 
virtual void mouseReleaseEvent ( QMouseEvent * e )
virtual void mouseDoubleClickEvent ( QMouseEvent * e )
virtual void mouseMoveEvent ( QMouseEvent * e )


Я посмотрел исходники, эти события вроде один и тот же QWidget::event используют. Наверное  в самом QTextView есть встронный виджет, который и ловит все события, только я не могу найти какой  :( .
Решил проблему пока варварским методом: назначел свой сокет, в констркуторе виджета перенаправил сигнал clicked(int, int) в етот сокет, а из сокета сделал вызов своего сигнала, с передачей необходимых мне параметров  :D .

Если кто подскажет как через event сделать, буду очень благодарен.