У меня есть приложение с графическим интерфейсом, которое создает QProcess
внутри, ловит его вывод и показывает его в форме. Мне нужно как-то перехватить ключевые события из формы, чтобы передать их в QProcess
(чтобы он как можно ближе подходил к реальному окну терминала).
Итак, я полагаю, я должен обработать keyReleaseEvent()
и каким-то образом преобразовать либо event.text()
(что составляет QString
), либо event.key()
(то есть int
) в аргумент, подходящий для process.write()
(который требует char*
или QByteArray
). Есть ли какой-нибудь рекомендуемый способ сделать такое преобразование (принимая во внимание проблемы локализации, модификаторы ctrl / alt / shift и т. Д.)? Я действительно не хочу создавать какое-то отображение из key()
возвращаемых значений в char*
строк; и text()
удаляет модификаторы.
Более того, если я запускаю процесс с помощью команды bash -c sudo something
в QProcess, он мгновенно завершает свою работу, жалуясь на то, что «отсутствует tty и не указана программа askpass», поэтому я могу что-то делать совершенно неправильно ...