我有一個GUI應用程序,裏面創建一個QProcess
,捕獲它的輸出並在窗體上顯示它。我需要以某種方式捕獲表單中的關鍵事件,將它們傳遞給QProcess
(使其儘可能接近真正的終端窗口)。透明地將Keyboad事件傳遞給QProcess的推薦方式是什麼?
所以,我想,我應該處理keyReleaseEvent()
並以某種方式變換或者event.text()
(這是QString
)或event.key()
(這是int
)到參數,適合process.write()
(這需要char*
或QByteArray
)。是否有推薦的方式來做這樣的轉換(考慮到本地化問題,ctrl/alt/shift修飾符等)?我真的不想構建某種從key()
返回值到char*
字符串的映射;和text()
滴修飾符。
而且,如果我在QProcess中開始命令bash -c sudo something
過程,它立即退出,抱怨說「沒有TTY出現,也沒有askpass程序規定」,所以我可能會做一些完全錯誤的...
只是評論,因爲這並沒有回答主要問題。要處理「no tty ...」問題,您可以確保使用QProcess :: setEnvironment(http://doc.trolltech.com/4.6/qprocess.html#setEnvironment)設置SUDO_ASKPASS環境變量。它必須設置爲要運行的程序的路徑,該路徑需要參數(提示符)並將密碼寫入標準輸出。 – imaginaryboy 2009-12-05 07:20:10
我不希望爲每個超偏執的程序設置一些深奧的變量......我希望有一種通用的方式使我的QProcess的行爲完全像終端應用程序。 – fjarri 2009-12-05 07:35:47