Russian Qt Forum

Qt => Вопросы новичков => Тема начата: MadBee от Июнь 02, 2019, 18:50



Название: QKeyEvent KeyPress
Отправлено: 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);
Пытался читать официальную документацию, толи английского не хватает, толи я не понимаю что происходит.
По хорошему хотелось бы получить именно эмуляцую нажатия клавиши, но тут как будто кто то костыль подставил - пока что не работает, поэтому вводите вручную. :)


Название: Re: QKeyEvent KeyPress
Отправлено: Авварон от Июнь 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, поэтому там строка.


Название: Re: QKeyEvent KeyPress
Отправлено: MadBee от Июнь 03, 2019, 05:42
Ну по сути, я бы и не отказался получить å на маке...
Это же симуляция нажатия клавиши, а не симуляция unicode?
Ну или если идти по этому пути, то можно отказаться от второго параметра? просто ставить там 0?
получается что он, ни на что не влияет?