Russian Qt Forum
Ноябрь 22, 2024, 11:41
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Qt Script, QtWebKit
>
Генерирование события нажатия левой кнопки мыши.
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Генерирование события нажатия левой кнопки мыши. (Прочитано 10984 раз)
Алёна_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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...