crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
Trisch
  опции профиля:
сообщение 26.12.2013, 9:36
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


А можно сделать так чтобы, в независимости от раскладки клавиатуры, в форму вводились только латинские символы?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
l0rdex
  опции профиля:
сообщение 26.12.2013, 17:35
Сообщение #2


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 2.8.2013
Пользователь №: 3894

Спасибо сказали: 0 раз(а)




Репутация:   0  


Trisch, Хотя бы уточнил где вводить собираешься.
А вообще, я думаю можно проверять язык системмы и при начале ввода его заменять...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.12.2013, 18:49
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Trisch @ 26.12.2013, 11:36) *
в форму вводились только латинские символы?
можно сделать фильтр событий на соответствующие виджеты.
В фильтре ловить QKeyEvent, в нём смотреть, что возвращает его метод int QKeyEvent::key () const и сравнивать значение с константами Qt::Key (не забыв обрабатывать enum Qt::KeyboardModifier)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 26.12.2013, 19:12
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


Цитата(l0rdex @ 26.12.2013, 18:35) *
Trisch, Хотя бы уточнил где вводить собираешься.
А вообще, я думаю можно проверять язык системмы и при начале ввода его заменять...


Ну вводить символы собираюсь, к примеру, в QLineEdit. И как можно проверить и поменять язык системы?

Цитата(Litkevich Yuriy @ 26.12.2013, 19:49) *
Цитата(Trisch @ 26.12.2013, 11:36) *
в форму вводились только латинские символы?
можно сделать фильтр событий на соответствующие виджеты.
В фильтре ловить QKeyEvent, в нём смотреть, что возвращает его метод int QKeyEvent::key () const и сравнивать значение с константами Qt::Key (не забыв обрабатывать enum Qt::KeyboardModifier)


Если я правильно понял данным способом можно отфильтровать нужные символы, то-есть, если я буду пытаться ввести кириллические символы то вводится ничего не будет. Но мне надо чтобы при вводе с клавиатуры, к примеру "рщьу", на форме отображалось бы "home".
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.12.2013, 19:53
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Trisch @ 26.12.2013, 21:12) *
данным способом можно отфильтровать нужные символы
Нет, можно отфильтровать события.
А вобработчике события ты волен делать всё что угодно.
Поймав нажатие клавиши с русской буквой "Щ" (Qt::Key_O), ты вводишь в виджет латинскую букву "O", а возвращаешся из обработчика события со значением Истина (событие обработано и дальше его передавать не надо). Если же буква не попалась, то возвращаешь Ложь (пусть получатель события сам разруливает остальные клавиши)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 29.12.2013, 14:03
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


У меня события фильтруются только если включена английская раскладка. В русской раскладке ничего не фильтруется :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.12.2013, 18:55
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Trisch @ 29.12.2013, 16:03) *
В русской раскладке ничего не фильтруется
Первый раз такое слышу.
приведи код (как устанавливаешь фильтр событий, как обрабатываешь).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 30.12.2013, 1:47
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


Вот код фильтра:
bool RegisrerNew::eventFilter(QObject *ob, QEvent *ev) {
    if (ob == pEdit10 && ev->type() == QEvent::KeyPress) {
        QKeyEvent *kv = static_cast<QKeyEvent *>(ev);
        if (kv->key() == Qt::Key_D) {
            QKeyEvent ke = QKeyEvent(QEvent::KeyPress, kv->nativeVirtualKey(),
                                     Qt::NoModifier, QChar(Qt::Key_0));
            *kv = ke;
        }
    }
    return false;
}


вот это пишу в конструкторе:
pEdit10->installEventFilter(this);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 30.12.2013, 15:29
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


у тебя в RegisrerNew::eventFilter(...) управление передаётся при русской раскладке?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 30.12.2013, 17:21
Сообщение #10


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


Да, передается.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 30.5.2025, 6:07