crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> [РЕШЕНО] через eventFillter Узнать какой объект создал эвент, если он не наследован от QObject...
Andrewshkovskii
  опции профиля:
сообщение 7.12.2009, 22:38
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

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




Репутация:   1  


Необходимо узнать, на каком объекте вызван ивент.
Проще говоря, мне необходимо определить, на pixmap'e ли кликнули мышкой, что бы рисовался path именно на нем, а нигде в другом месте... ?
Я так понимаю, что через проверку sender'а не получиться, т.к это не сигнал,да и адрес в этом вызове всегда будет 0x0 (проверял).
Смотреть, входит ли позиция вызова в пределы нужного объекта?

Сообщение отредактировал Andrewshkovskii - 8.12.2009, 0:03
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 7.12.2009, 22:48
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


Кликнуть на pixmap'e невозможно, это не визуальный класс. Тебе нужно переопределять mousePressEvent() и т.п. у того виджета, который показывает твой pixmap.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 7.12.2009, 22:53
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

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




Репутация:   1  


Получается, что если я использую QLabel для отображения Pixmap'а, то надо определять свой виджет, наследуясь от QLabel?...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 7.12.2009, 23:08
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


Цитата(Andrewshkovskii @ 7.12.2009, 22:53) *
Получается, что если я использую QLabel для отображения Pixmap'а, то надо определять свой виджет, наследуясь от QLabel?...

Ага. Но если не хочется, то и installEventFilter() подойдет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 7.12.2009, 23:42
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

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




Репутация:   1  


Почитал бланшета на эту тему.. Вот что попробовал :
в конструкторе :
installEventFilter(ui->inputSymbolFiled);
//ui->inputSymbolFiled -  QLabel *


И сам фильтер :
bool recognizer::eventFilter(QObject *o, QEvent *e)
{
    if (o == ui->inputSymbolFiled){
        qDebug() << "1";
        return true;
    }else
       qDebug() << "hell";
    return QWidget::eventFilter(o,e);
}

и при клике на текст лейбла, или пиксмап внутри него в консоль ничего не выводиться..в чем ошибка закралась?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 7.12.2009, 23:50
Сообщение #6


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


Andrewshkovskii,
по моему ты шиворот на выворот написал(могу ошибаться)
ты в рекогнайзер установил фильтр лэйбла. а нужно то наоборот.

Сообщение отредактировал kwisp - 7.12.2009, 23:51
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 7.12.2009, 23:52
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

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




Репутация:   1  


Ну что бы установить фильтр лейбла - нужно его реализовать самому, отнаследовшись. Я так это понимаю. Да и в книжке последовательность такая же.

надо было вот так вот :
    ui->inputSymbolFiled->installEventFilter(this);

Я понял, про что квисп сказал, извини, что оклеветал!:)

Сообщение отредактировал Andrewshkovskii - 8.12.2009, 0:02
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.3.2024, 12:22