Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Yura от Декабрь 08, 2008, 19:08



Название: Класс QTextEdit и обработка события клавиатуры
Отправлено: Yura от Декабрь 08, 2008, 19:08
в своей программе использую без изменения класс из примера QTDIR\4.4.1\examples\tools\customcompleter\textedit.h, унаследованный от QTextEdit

пишу основной класс (внутри имеется переменная типа TextEdit), в котором используется обработчик события клавиатуры
Код:
void mainwidget::keyPressEvent(QKeyEvent *event)
{
switch (event->key())
{
case Qt::Key_Return :
{
sendRequest();
}
break;

default :
{
QWidget::keyPressEvent(event);
}
}
}

как при нажатии на Shift+Enter (внутри TextEdit) обработать событие.


Название: Re: Класс QTextEdit и обработка события клавиатуры
Отправлено: Hellraiser от Декабрь 08, 2008, 20:25
используй в обработчике нажатия Enter`a
Код
C++ (Qt)
if(event->modifiers()==Qt::ShiftModifier)
{
// делаем что-то...
}


Название: Re: Класс QTextEdit и обработка события клавиатуры
Отправлено: Yura от Декабрь 08, 2008, 21:03
У класса  TextEdit  есть свой обработчик события

Код:
void TextEdit::keyPressEvent(QKeyEvent *e)
{
    if (c && c->popup()->isVisible()) {
        // The following keys are forwarded by the completer to the widget
       switch (e->key()) {
       case Qt::Key_Enter:
       case Qt::Key_Return:
       case Qt::Key_Escape:
       case Qt::Key_Tab:
       case Qt::Key_Backtab:
            e->ignore();
            return; // let the completer do default behavior
       default:
   //QTextEdit::keyPressEvent(e);
           break;
       }
    }

...

вот думаю как сделать, чтобы при нажатии Shift+Enter обрабатывалось событиие void mainwidget::keyPressEvent(QKeyEvent *event), а не void TextEdit::keyPressEvent(QKeyEvent *e)
подскажите плиз.
или чтобы сначало обработалось void TextEdit::keyPressEvent(QKeyEvent *e) , а затем void mainwidget::keyPressEvent(QKeyEvent *event)


Название: Re: Класс QTextEdit и обработка события клавиатуры
Отправлено: pastor от Декабрь 08, 2008, 21:17
см. installEventFilter, eventFilter


Название: Re: Класс QTextEdit и обработка события клавиатуры
Отправлено: Yura от Декабрь 08, 2008, 22:35
спасибо, это как раз, что нужно. Буду разбираться