crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> mouseMoveEvent не вызывается, Если просто водить мышкой, mouseMoveEvent не вызывается
Гость_Гость__AK__*_*
сообщение 28.12.2011, 11:43
Сообщение #1





Гости








    


Мой виджет:
class CMyWdgt : public QWidget
{
    Q_OBJECT
public:
    CMyWdgt (QWidget* parent = 0);
protected:
    virtual void paintEvent (QPaintEvent* event);
    virtual void mouseMoveEvent (QMouseEvent* event);
};


void CMyWdgt::mouseMoveEvent (QMouseEvent* event)
{
    event->accept ();
    if (event->buttons () && Qt::LeftButton)
        qDebug () << "left button";
    else
        qDebug () << "No left button";  //этот код не исполняется
}


Использование:
QDialog* tpDlg = new QDialog;
tpDlg->resize (600, 400);
QVBoxLayout* tpMainLayout = new QVBoxLayout (tpDlg);
tpMainLayout->setSpacing (6);
tpMainLayout->setContentsMargins (11, 11, 11, 11);
CMyWdgt* tpWdgt = new CMyWdgt (tpDlg);
tpMainLayout->addWidget (tpWdgt);
tpDlg->exec ();
delete tpDlg;

Если нажать кнопку и таскать мышку, то все ОК (текст "left button" выводится), а если не нажимая кнопку таскать мышь, то все грусно - никакого текста не выводится. Кто перехватывает и как быть?
Уже пробовал ставить eventFilter - та же фигня (вызывается только если мышь таскают с нажатой кнопкой).

Сообщение отредактировал ViGOur - 28.12.2011, 21:55
Причина редактирования: Не забываем тег [code]
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ernie
  опции профиля:
сообщение 28.12.2011, 11:51
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

Спасибо сказали: 11 раз(а)




Репутация:   1  


сделать setMouseTracking(true) на виджете
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость__AK__*_*
сообщение 28.12.2011, 11:58
Сообщение #3





Гости








    


Цитата(ernie @ 28.12.2011, 11:51) *
сделать setMouseTracking(true) на виджете

Спасибо, помогло.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ssoft
  опции профиля:
сообщение 28.12.2011, 15:02
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 17.2.2010
Из: Москва
Пользователь №: 1470

Спасибо сказали: 30 раз(а)




Репутация:   3  


Цитата(Гость__AK__* @ 28.12.2011, 12:58) *
Цитата(ernie @ 28.12.2011, 11:51) *
сделать setMouseTracking(true) на виджете

Спасибо, помогло.


Вообще, без нажатия на кнопку мыши обрабатывается событие hoverMoveEvent(), а не mouseMoveEvent().
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ernie
  опции профиля:
сообщение 10.1.2012, 12:07
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

Спасибо сказали: 11 раз(а)




Репутация:   1  


Цитата(ssoft @ 28.12.2011, 21:02) *
Вообще, без нажатия на кнопку мыши обрабатывается событие hoverMoveEvent(), а не mouseMoveEvent().


Это для QGraphicsWidget ,а у человека QWidget

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.4.2024, 7:35