Russian Qt Forum
Апрель 18, 2024, 20:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QKeyEvent KeyPress  (Прочитано 1782 раз)
MadBee
Гость
« : Июнь 02, 2019, 18:50 »

Всем привет,
Помогите пожалуйста разобраться с ситуацией.
Только изучаю Qt. дошел до к QKeyEvent
И никак не въеду зачем ему четыре параметра. первый KeyPress ясно, второй по идее код клавиши которая будет нажата, третий модификатор.
по идее не должно быть четвертого(строки стринг), зачем она если мы нажатие клавиши а не текст передаем?
но без четвертого параметра ничего не работает, но Creator не ругается.
А если писать четвертый параметр, то есть можно передать в объект сразу весь текст, не надо по одной клавише жать.
    QLineEdit txt;
    txt.show();
    QKeyEvent keyPress(QEvent::KeyPress,0,Qt::NoModifier, "ABC");
    QApplication::sendEvent(&txt,&keyPress);
    QKeyEvent keyRelease(QEvent::KeyRelease,0,Qt::NoModifier);
    QApplication::sendEvent(&txt,&keyRelease);
Пытался читать официальную документацию, толи английского не хватает, толи я не понимаю что происходит.
По хорошему хотелось бы получить именно эмуляцую нажатия клавиши, но тут как будто кто то костыль подставил - пока что не работает, поэтому вводите вручную. Улыбающийся
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3258


Просмотр профиля
« Ответ #1 : Июнь 02, 2019, 20:07 »

Цитировать
QString QKeyEvent::text() const
Returns the Unicode text that this key generated.
Return values when modifier keys such as Shift, Control, Alt, and Meta are pressed differ among platforms and could return an empty string.

Вы нажали кнопку A с альтом на Маке и получили символ å.
Unicode не обязан влезать в один QChar, поэтому там строка.
Записан
MadBee
Гость
« Ответ #2 : Июнь 03, 2019, 05:42 »

Ну по сути, я бы и не отказался получить å на маке...
Это же симуляция нажатия клавиши, а не симуляция unicode?
Ну или если идти по этому пути, то можно отказаться от второго параметра? просто ставить там 0?
получается что он, ни на что не влияет?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 22.