Название: Переопределение keyPressEvent Отправлено: Mashko от Февраль 09, 2010, 20:23 Подскажите, пожалуйста, решение проблемы!
Есть модуль. В его .cpp вынесены функции, в .h - их прототипы и объявлен статический объект: Код: static QTextEdit* textWidget; Для этого объекта нужно переопределить метод keyPressEvent. При моей попытке делать это так: Код: //.h Код: 1.error C2825: 'textWidget': must be a class or namespace when followed by '::' Может, кто знает правильное решение Название: Re: Переопределение keyPressEvent Отправлено: BRE от Февраль 09, 2010, 20:35 Хорошо бы, что-то по С++ почитать. ;)
Название: Re: Переопределение keyPressEvent Отправлено: lit-uriy от Февраль 09, 2010, 20:56 >>нужно переопределить метод keyPressEvent
чтобы переопределить метод какого-то класса, нужно создать наследника (унаследоваться) от этого класса и в новом просто набрать этот метод заново. Название: Re: Переопределение keyPressEvent Отправлено: BRE от Февраль 09, 2010, 21:07 Самое главное, что нельзя переопределять метод у конкретного объекта, а можно только у класса.
Название: Re: Переопределение keyPressEvent Отправлено: Mashko от Февраль 09, 2010, 21:38 Самое главное, что нельзя переопределять метод у конкретного объекта, а можно только у класса. Так может тогда переопределять сразу у QTextEdit, от которого наследовался textWidget? Название: Re: Переопределение keyPressEvent Отправлено: BRE от Февраль 09, 2010, 21:45 Так может тогда переопределять сразу у QTextEdit, от которого наследовался textWidget? mytextedit.h Код
mytextedit.cpp Код
Название: Re: Переопределение keyPressEvent Отправлено: lit-uriy от Февраль 09, 2010, 23:32 >>Так может тогда переопределять сразу у QTextEdit, от которого наследовался textWidget?
в приведённом тобою коде: static QTextEdit* textWidget; ты просто объявил переменную-указатель textWidget на тип QTextEdit. А не наследовался. См. пример, который привёл BRE. Там именно наследование (т.е. создаётся новый класс MyTextEdit на основе класса QTextEdit) Название: Re: Переопределение keyPressEvent Отправлено: Mashko от Февраль 10, 2010, 18:43 Я женского роду, ну да ладно :D
Так вот, не мучаясь долго переопределила метод keyPressEvent() для всего QTextEdit. Нажатие, например, на Enter ловится, но при этом почему-то пропала возможность ввода текста в textWidget ??? Код: void QTextEdit::keyPressEvent(QKeyEvent* event) Название: Re: Переопределение keyPressEvent Отправлено: BRE от Февраль 10, 2010, 18:55 Написал же - предка. ;)
Код: ... Название: Re: Переопределение keyPressEvent Отправлено: lit-uriy от Февраль 10, 2010, 21:32 >>Написал же - предка.
Дак она в исходник Qt забралась П.С. Ожидаю море постов с описанием неадекватного поведения Qt-виджетов Название: Re: Переопределение keyPressEvent Отправлено: break от Февраль 10, 2010, 23:24 оффтоп т.к. по теме даже сказать нечего. Думаю эта тема разовьется старниц на 40 - а все от того что кто-то решил что C++ можно изучить не читая ни одной книги...
|