Russian Qt Forum

Qt => Общие вопросы => Тема начата: lenny от Апрель 11, 2012, 13:51



Название: Как получить QKeyEvent::text по коду Qt::Key с учетом текущей раскладки?
Отправлено: lenny от Апрель 11, 2012, 13:51
Надо (хочу) отправлять событие нажатия кнопки в некоторый виджет. Туда же пользователь может вводить с клавы. Отправляю с помощью postEvent указатель на объект QKeyEvent.
[cpp]
Qt::Key keyId = Qt::Key_Q;
QString text = "?"; //Как здесь получить текст по коду клавиши c учетом текущей раскладки клавиатуры? То есть как получить по Qt::Key_Q QString("Й") при русской раскладке.
QKeyEvent keyEvent = new QKeyEvent(QEvent::KeyPress, keyId, Qt::ShiftModifier, text);
QCoreApplication::postEvent(someEdit, keyEvent));
[/cpp]



Название: Re: Как получить QKeyEvent::text по коду Qt::Key с учетом текущей раскладки?
Отправлено: Bepec от Апрель 11, 2012, 13:55
Никак не получить, если только не запрашивать раскладку у винды.

Кстати интересный вопрос - Qt::Key_Q отреагирует на й? 


Название: Re: Как получить QKeyEvent::text по коду Qt::Key с учетом текущей раскладки?
Отправлено: lenny от Апрель 11, 2012, 14:11
Никак не получить
Qt это делает и средства там для этого есть.


Название: Re: Как получить QKeyEvent::text по коду Qt::Key с учетом текущей раскладки?
Отправлено: lenny от Апрель 12, 2012, 14:12
Никак не получить
Qt это делает и средства там для этого есть.
Я обшибся, глянул исходники, снаружи этого не сделать.


Название: Re: Как получить QKeyEvent::text по коду Qt::Key с учетом текущей раскладки?
Отправлено: Bepec от Апрель 12, 2012, 14:45
Можно просто запрашивать в начале работы по winApi (linuxApi) раскладку и запоминать. Далее уже ловить смену раскладки.

В принципе ничего сложного.


Название: Re: Как получить QKeyEvent::text по коду Qt::Key с учетом текущей раскладки?
Отправлено: lolbla2 от Апрель 12, 2012, 15:06
с помощью Event filter можно отправлять сообщения какому хочешь виджету, главное установить на виджет кому должно быть сообщение этот фильтр