Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Текущая раскладка клавиатуры
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
Мотов Юрий
Не нашел решения как узнать текущую раскладку клавиатуры и как её изменить.
Qt 4.7.0, Windows
kwisp
посмотри
QLocale QApplication::keyboardInputLocale () [static]

П.С.
гугл быстро ответ нашел
и что тема делает в разделе
Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие ?
Мотов Юрий
Цитата(kwisp @ 1.11.2010, 11:29) *
посмотри
QLocale QApplication::keyboardInputLocale () [static]

П.С.
гугл быстро ответ нашел
и что тема делает в разделе
Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие ?


keyboardInputLocale() пробовал, у меня всегда возвращает RU_ru независимо от выбранной раскладки.
kwisp
вообще говоря это баг был до версии 4.7 но у тебя как раз она.
может не исправили?
зайди на багтрекер троллей посмотри.
CodeHunter
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
Litkevich Yuriy
CodeHunter, объясни, что делает этот код
CodeHunter
Цитата
keyboardInputLocale() пробовал, у меня всегда возвращает RU_ru независимо от выбранной раскладки.


Это по тому что сообщение о смене раскладки клавиатуры не доходит до формы (то есть не обрабатывается). Без этой обработки приложение не знает о смене раскладки клавиатуры, а возвращает ту раскладку которая была при запуску программы. Здесь же мы обрабатываем пришедшее сообщение от системы и обновляем все данные в приложении
Litkevich Yuriy
CodeHunter, ты не ответил на мой вопрос
CodeHunter
Цитата(Litkevich Yuriy @ 2.11.2010, 10:19) *
CodeHunter, ты не ответил на мой вопрос



Цитата(CodeHunter @ 1.11.2010, 20:19) *
Здесь же мы обрабатываем пришедшее сообщение от системы и обновляем все данные в приложении
igor_bogomolov
Цитата(CodeHunter @ 1.11.2010, 21:19) *
Здесь же мы обрабатываем пришедшее сообщение от системы и обновляем все данные в приложении
нам не нужно обновлять никаких данных. Нам нужно узнать текущую раскладку клавиатуры. Где в твоем коде это делается?
CodeHunter
Цитата(igor_bogomolov @ 2.11.2010, 11:37) *
ним ни нужно обновлять ни каких данных. Нам нужно узнать текущую раскладку клавиатуры. Где в твоем коде это делается?


Сначала посмотри на мой ответ, а потом задавай такие вопросы . :ireful: Я ответил человеку на вопрос :

Цитата
keyboardInputLocale() пробовал, у меня всегда возвращает RU_ru независимо от выбранной раскладки.
.


Цитата(CodeHunter @ 1.11.2010, 20:19) *
keyboardInputLocale() пробовал, у меня всегда возвращает RU_ru независимо от выбранной раскладки.


Это по тому что сообщение о смене раскладки клавиатуры не доходит до формы (то есть не обрабатывается). Без этой обработки приложение не знает о смене раскладки клавиатуры, а возвращает ту раскладку которая была при запуску программы. Здесь же мы обрабатываем пришедшее сообщение от системы и обновляем все данные в приложении
Litkevich Yuriy
CodeHunter, ты не приводил код отлавливающий смену раскладки. ты привёл код который принудительно переводит интерфейс.
За каким лешим ты его привёл?

Цитата(CodeHunter @ 2.11.2010, 18:25) *
Здесь же мы обрабатываем пришедшее сообщение от системы и обновляем все данные в приложении
в твоём коде не обновляются все данные приложения.

Цитата(CodeHunter @ 2.11.2010, 18:25) *
Это по тому что сообщение о смене раскладки клавиатуры не доходит до формы
покажи место в документции, где упоминает, что в Qt есть сообщение о смене раскладки

ты чё несёшь вообще?
kwisp
Цитата(CodeHunter @ 1.11.2010, 17:40) *
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}

не пойму если сообщение о смене языка уже пришло зачем ui->retranslateUi(this);
CodeHunter,
можешь полностью рабочий компилируемый пример выложить ?
Мотов Юрий
По keyboardInputLocale() действительно баг
http://bugreports.qt.nokia.com/browse/QTBU...%3Aall-tabpanel

А может подскажете алтернативный метод? Видел где-то совет воспользоваться WinAPI, сейчас буду пытаться.
И ещё видел что-то с xkb, не смог понять что это такое и счем едят..
kwisp
Цитата(Мотов Юрий @ 2.11.2010, 14:49) *
По keyboardInputLocale() действительно баг

ч.т.д.

ждём все вместе от CodeHunter`а рабочий пример.
Litkevich Yuriy
Цитата(Мотов Юрий @ 2.11.2010, 17:49) *
А может подскажете алтернативный метод?
попробуй контролировать событие QEvent::KeyboardLayoutChange
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.