Russian Qt Forum
Июнь 16, 2024, 03:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Отловить нажатие мыши  (Прочитано 18560 раз)
V1KT0P
Гость
« Ответ #15 : Апрель 10, 2012, 13:39 »

Пустая форма
В аттаче проект, посмотри его, запусти. И если все также непонятно, то объясни что именно.
Записан
bez_glaz
Гость
« Ответ #16 : Апрель 10, 2012, 13:45 »

Пустая форма
В аттаче проект, посмотри его, запусти. И если все также непонятно, то объясни что именно.
Всё понял, да я не унаследовался от QApplication поэтому не получалось. А создавать ещё один класс для унаследования, для меня не очень удобное решение, как и меня родителя для mainwindow. Воспользуюсь вторым методом. Впринципе он меня полностью удовлетворил.
Всем спасибо.
Записан
mutineer
Гость
« Ответ #17 : Апрель 10, 2012, 13:46 »

Пустая форма
В аттаче проект, посмотри его, запусти. И если все также непонятно, то объясни что именно.
Всё понял, да я не унаследовался от QApplication поэтому не получалось. А создавать ещё один класс для унаследования, для меня не очень удобное решение, как и меня родителя для mainwindow. Воспользуюсь вторым методом. Впринципе он меня полностью удовлетворил.
Всем спасибо.

А как ты вообще собирался переопределять метод без наследования?
Записан
bez_glaz
Гость
« Ответ #18 : Апрель 10, 2012, 14:03 »

Пустая форма
В аттаче проект, посмотри его, запусти. И если все также непонятно, то объясни что именно.
Всё понял, да я не унаследовался от QApplication поэтому не получалось. А создавать ещё один класс для унаследования, для меня не очень удобное решение, как и меня родителя для mainwindow. Воспользуюсь вторым методом. Впринципе он меня полностью удовлетворил.
Всем спасибо.

А как ты вообще собирался переопределять метод без наследования?
Прост не подумал ...
Записан
bez_glaz
Гость
« Ответ #19 : Апрель 10, 2012, 14:07 »

Столкнулся со следующей проблемой. События то я получаю типа QEvent, и определяю что это нажатие мыши. А вот координат в QEvent нету:(
Можно ли имея Event и зная что это QMouseEvent узнать непосредственно координаты курсора? Или просто в момент когда будит поймано событие Event  узнать координаты мыши на момент, совершения Event'а?
Записан
V1KT0P
Гость
« Ответ #20 : Апрель 10, 2012, 14:11 »

Столкнулся со следующей проблемой. События то я получаю типа QEvent, и определяю что это нажатие мыши. А вот координат в QEvent нету:(
Можно ли имея Event и зная что это QMouseEvent узнать непосредственно координаты курсора? Или просто в момент когда будит поймано событие Event  узнать координаты мыши на момент, совершения Event'а?
Ну дык используй qobject_cast как в примере что я выложил.
Записан
bez_glaz
Гость
« Ответ #21 : Апрель 10, 2012, 14:18 »

Столкнулся со следующей проблемой. События то я получаю типа QEvent, и определяю что это нажатие мыши. А вот координат в QEvent нету:(
Можно ли имея Event и зная что это QMouseEvent узнать непосредственно координаты курсора? Или просто в момент когда будит поймано событие Event  узнать координаты мыши на момент, совершения Event'а?
Ну дык используй qobject_cast как в примере что я выложил.
Эмм... то ли я туплю то ли хз )
но не пойму чем мне поможет функция, возвращающая ссылку на объект по его имени ?
Или я что-то не так понял ?Улыбающийся
Записан
Bepec
Гость
« Ответ #22 : Апрель 10, 2012, 14:21 »

Код:
QMouseEvent* myEvent = qobject_cast<QMouseEvent*>(event);
QPoint position = myEvent->pos();

Как то так, возможно неверно, написано на тополе.
Записан
bez_glaz
Гость
« Ответ #23 : Апрель 10, 2012, 14:23 »

Столкнулся со следующей проблемой. События то я получаю типа QEvent, и определяю что это нажатие мыши. А вот координат в QEvent нету:(
Можно ли имея Event и зная что это QMouseEvent узнать непосредственно координаты курсора? Или просто в момент когда будит поймано событие Event  узнать координаты мыши на момент, совершения Event'а?
Ну дык используй qobject_cast как в примере что я выложил.
А вообще очень интересная функция =)
Вопрос немножко не по теме.
Если я опишу свой класс. Объявлю два объекта этого класса, допусти в двух вдругих классах, и имена им дам одинаковые. Эта функция вернёт оба этих объекта ? Улыбающийся
Записан
V1KT0P
Гость
« Ответ #24 : Апрель 10, 2012, 14:23 »

Код:
QMouseEvent* myEvent = qobject_cast<QMouseEvent*>(event);
QPoint position = myEvent->pos();

Как то так, возможно неверно, написано на тополе.
Не, оказывается эвент не наследуется от кьюобжекта. Надо так:
Код
C++ (Qt)
if (e->type() == QEvent::MouseButtonPress) {
   QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(e);
   qDebug() << mouseEvent->pos();
}
« Последнее редактирование: Апрель 10, 2012, 14:25 от V1KT0P » Записан
bez_glaz
Гость
« Ответ #25 : Апрель 10, 2012, 14:26 »

Код:
QMouseEvent* myEvent = qobject_cast<QMouseEvent*>(event);
QPoint position = myEvent->pos();

Как то так, возможно неверно, написано на тополе.
не поверишь реализовал сразу же
Код:
QMouseEvent * ev = qobject_cast <QMouseEvent *>(event);
в ответ получил "нет соответствующей функции для вызова «qobject_cast(QEvent*&)»"
Записан
bez_glaz
Гость
« Ответ #26 : Апрель 10, 2012, 14:28 »

Код:
QMouseEvent* myEvent = qobject_cast<QMouseEvent*>(event);
QPoint position = myEvent->pos();

Как то так, возможно неверно, написано на тополе.
Не, оказывается эвент не наследуется от кьюобжекта. Надо так:
Код
C++ (Qt)
if (e->type() == QEvent::MouseButtonPress) {
   QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(e);
   qDebug() << mouseEvent->pos();
}
во во и я про тоже Event - это QtCore,а MouseEvet - это QtGui
Записан
bez_glaz
Гость
« Ответ #27 : Апрель 10, 2012, 14:31 »

Всё получилось - спасибо большое  V1KT0P!
И просто замечательно что я познакомился с функциями static_cast и qobject_cast  Улыбающийся
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4732



Просмотр профиля WWW
« Ответ #28 : Апрель 10, 2012, 14:53 »

И просто замечательно что я познакомился с функциями static_cast
было бы просто замечательно, если бы знакомство начинали с С++, а не сразу бежали окошки рисовать
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
bez_glaz
Гость
« Ответ #29 : Апрель 10, 2012, 14:56 »

И просто замечательно что я познакомился с функциями static_cast
было бы просто замечательно, если бы знакомство начинали с С++, а не сразу бежали окошки рисовать
Не всё в жизни получается так, как надо. Обстоятельства заставляют ...
Я бы сам рад - сначала изучить на твёрдую пятёрку плюсы, потом буравить Qt, но увы... времени и на изучение одного и реализацию в другом не хватает. Приходиться навёрстывать по пути.
« Последнее редактирование: Апрель 10, 2012, 15:03 от bez_glaz » Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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