Russian Qt Forum

Qt => Общие вопросы => Тема начата: G-virus от Май 22, 2012, 13:54



Название: [РЕШЕНО]keyPressEvent(), keyReleaseEvent(). Не пропускает клавиши
Отправлено: G-virus от Май 22, 2012, 13:54
Здравствуйте. У меня возникла довольно непонятная для меня проблема. Возможно и самая простая.
Написал класс
Код
C++ (Qt)
class PascalCode : public QTextEdit
{
   Q_OBJECT
   public:
   PascalCode(QWidget *parent = 0):QTextEdit(parent){}
   protected:
    void keyPressEvent(QKeyEvent *e);
    void keyReleaseEvent(QKeyEvent *e);
};
 

и оставил пустые ивенты
Код
C++ (Qt)
void PascalCode::keyPressEvent(QKeyEvent *e)
{
 
}
 
void PascalCode::keyReleaseEvent(QKeyEvent *e)
{
 
}
 

но почему-то символы не пропускаются, в текстовом поле текст не печатается. На e->accept() и e->ignore() ему тоже все равно. В чем может быть косяк? (извиняюсь за нубарский вопрос, но сроки жмут, а я впервые столкнулся с такой проблемой)


Название: Re: keyPressEvent(), keyReleaseEvent(). Не пропускает клавиши
Отправлено: GreatSnake от Май 22, 2012, 13:55
Вызывай методы базового класса.


Название: Re: keyPressEvent(), keyReleaseEvent(). Не пропускает клавиши
Отправлено: G-virus от Май 22, 2012, 14:01
Вызывай методы базового класса.

Да, это помогло, спасибо. А можно немножко теории, почему я не могу переопределить данные методы?


Название: Re: keyPressEvent(), keyReleaseEvent(). Не пропускает клавиши
Отправлено: GreatSnake от Май 22, 2012, 14:04
А можно немножко теории, почему я не могу переопределить данные методы?
Переопределяй сколько хочешь, только в них не забывай вызывать аналогичные методы базового класса.
Ведь кто-то же должен обрабатывать нажатия.


Название: Re: keyPressEvent(), keyReleaseEvent(). Не пропускает клавиши
Отправлено: G-virus от Май 22, 2012, 14:05
А можно немножко теории, почему я не могу переопределить данные методы?
Переопределяй сколько хочешь, только в них не забывай вызывать аналогичные методы базового класса.
Ведь кто-то же должен обрабатывать нажатия.

А, ну, в принципе да, логично. Просто почему-то думал, что это автоматически делается, как вызов конструктора базового класса, например. Спасибо за помощь :)


Название: Re: keyPressEvent(), keyReleaseEvent(). Не пропускает клавиши
Отправлено: GreatSnake от Май 22, 2012, 14:08
Просто почему-то думал, что это автоматически делается, как вызов конструктора базового класса, например.
С чего это вдруг? Хм... не мешало бы азы C++ подучить.