Russian Qt Forum
Января 14, 2025, 16:03
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Qt Script, QtWebKit
>
Генерирование события нажатия левой кнопки мыши.
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Генерирование события нажатия левой кнопки мыши. (Прочитано 11103 раз)
Алёна_4_12_1989
Гость
Генерирование события нажатия левой кнопки мыши.
«
:
Ноября 08, 2012, 16:57 »
Здравствуйте. Подскажите, пожлаулуйста, как сгенерировать QMouseEvent для нажатия левой кнопки мыши. Я делаю следующим образом:
QMouseEvent mouse_event = QMouseEvent(QEvent::MouseButtonPress, QCursor::pos(), Qt::LeftButton , Qt::NoButton, Qt::NoModifier);
QApplication::postEvent(this, &mouse_event);
Но происходит CRASH.
Эти действия я провожу в функции класса, наследуемого от QWidget. Мой класс имеет макрос Q_OBJECT.
В чем может быть дело? Спасибо.
Записан
mutineer
Гость
Re: Генерирование события нажатия левой кно
«
Ответ #1 :
Ноября 08, 2012, 17:10 »
в том, что mouse_event уничтожается при выходе из этой функции, а postEvent нужно чтобы объект продолжал жить
Цитировать
The event must be allocated on the heap since the post event queue will take ownership of the event and delete it once it has been posted
«
Последнее редактирование: Ноября 08, 2012, 17:20 от mutineer
»
Записан
Алёна_4_12_1989
Гость
Re: Генерирование события нажатия левой кнопки мыши.
«
Ответ #2 :
Ноября 08, 2012, 17:23 »
Спасибо. Это помогло. Приложение не падает. Но желаемое действие не происходит после входа в mousePressEvent(). Т.е. скорее всего неправильно передаются параметры в конструктор QMouseEvent(). Может Вы знаете, как создавать ивент правильно?
Записан
mutineer
Гость
Re: Генерирование события нажатия левой кнопки мыши.
«
Ответ #3 :
Ноября 08, 2012, 17:28 »
Попробуй после этого ивента послать еще QEvent::MouseButtonRelease
Записан
Алёна_4_12_1989
Гость
Re: Генерирование события нажатия левой кнопки мыши.
«
Ответ #4 :
Ноября 08, 2012, 17:29 »
Сейчас попробую. Спс.
Записан
mutineer
Гость
Re: Генерирование события нажатия левой кнопки мыши.
«
Ответ #5 :
Ноября 08, 2012, 17:32 »
Ну и не забывай, что QCursor::pos() это глобальные координаты, а в ивент надо передавать координаты относительно целевого виджета
Записан
Алёна_4_12_1989
Гость
Re: Генерирование события нажатия левой кнопки мыши.
«
Ответ #6 :
Ноября 08, 2012, 17:38 »
Да, это действительно помогло. Действие выполнялось по клику, т.е. после отпускания кнопки. Большое спасибо. Осталось разобраться, почему приложение падает при повторном клике. Думаю, разберусь.
У Вас большой опыт работы с Qt ?
Записан
mutineer
Гость
Re: Генерирование события нажатия левой кнопки мыши.
«
Ответ #7 :
Ноября 08, 2012, 17:40 »
Года полтора, наверно)))
Записан
Алёна_4_12_1989
Гость
Re: Генерирование события нажатия левой кнопки мыши.
«
Ответ #8 :
Ноября 08, 2012, 17:41 »
НАвероное, весь хелп перечитали)
Записан
mutineer
Гость
Re: Генерирование события нажатия левой кнопки мыши.
«
Ответ #9 :
Ноября 08, 2012, 17:42 »
Нет конечно, не все технологии нужны на текущем проекте
Записан
Алёна_4_12_1989
Гость
Re: Генерирование события нажатия левой кнопки мыши.
«
Ответ #10 :
Ноября 08, 2012, 17:44 »
Ясно. БОльшое спасибо за помощь
Записан
Алёна_4_12_1989
Гость
Re: Генерирование события нажатия левой кнопки мыши.
«
Ответ #11 :
Ноября 08, 2012, 18:08 »
Упс. Если Вы еще не ушли.
Я создаю объект QMouseEvent, но когда я его удаляю, приложение падает(
Printf после функции delete не печатается.
Записан
mutineer
Гость
Re: Генерирование события нажатия левой кнопки мыши.
«
Ответ #12 :
Ноября 08, 2012, 18:12 »
код покажи
Записан
twp
Гость
Re: Генерирование события нажатия левой кнопки мыши.
«
Ответ #13 :
Ноября 08, 2012, 19:00 »
его не надо удалять, он удаляется в цикле обработки сообщений. Поэтому происходит краш - удаление уже удаленного объекта
Записан
Алёна_4_12_1989
Гость
Re: Генерирование события нажатия левой кнопки мыши.
«
Ответ #14 :
Ноября 09, 2012, 09:09 »
Спасибо. Я уже додумалась до этого)))
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...