Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Larry от Ноябрь 27, 2010, 15:04



Название: События клавиатуры
Отправлено: Larry от Ноябрь 27, 2010, 15:04
Добрый день, форумчане! Есть переопределенное событие keyPressEvent и при обработке нажатия ctrl + 'S' надо отправить строку в функцию, где она и будет обработана, но в реальности происходить отправка двух строк, сначала пустая "" и вторая уже с результатом. Как мне избавиться от пустой строки?

Код:
QString str;

switch(keyEvent->key())
{
case Qt::Key_C:
str = "C";
break;

case Qt::Key_Enter:
case Qt::Key_Return:
str = "=";
break;

case Qt::Key_Comma:
str = ".";
break;

case Qt::Key_S:
if(keyEvent->modifiers() & Qt::ControlModifier)
{
str = "MS";
}
break;

default: str = keyEvent->text(); break;
}

processKey(str);

из-за этого в processKey возникает ошибка :(


Название: Re: События клавиатуры
Отправлено: whirlwind от Ноябрь 27, 2010, 17:27
по идее, в данном случае, если нажали ctrl+S, вы попадете в default:
Код:
default: str = keyEvent->text(); break;
и тогда ваша строка будет равна "Ctrl+S" Почему вы получаете другой незультат -- не ясно.

еще есть подозрение, что на самом деле вы хотели использовать QAction :)


Название: Re: События клавиатуры
Отправлено: Larry от Ноябрь 27, 2010, 19:28
спасибо, посмотрю как это можно использовать :)