0

QProcess内部を作成し、その出力をキャッチしてフォームに表示する GUI アプリケーションがあります。フォームから重要なイベントを何らかの方法でキャッチして、それらを渡す必要がありますQProcess(実際の端末ウィンドウにできるだけ近づけるため)。

だから、私は処理keyReleaseEvent()し、何らかの方法でevent.text()(which is QString) またはevent.key()(which is int) を引数に変換する必要があると思いますprocess.write()(which takes char*or QByteArray)。そのような変換を行うための推奨される方法はありますか (ローカリゼーションの問題、ctrl/alt/shift 修飾子などを考慮して)? key()戻り値からchar*文字列へのある種のマッピングを構築したくはありません。text()モディファイアをドロップします。

さらに、bash -c sudo somethingQProcessでコマンドを使用してプロセスを開始すると、「ttyが存在せず、askpassプログラムが指定されていません」と不平を言ってすぐに終了するため、完全に間違ったことをしている可能性があります...

4

1 に答える 1

2

問題は、プロセスに何を書き込むかを決定することだけではありません。

プロセスのstdout/stdinを読み書きするだけでは、端末をエミュレートすることはできません。それよりも複雑です。lessたとえば、プログラムやポケットベルについて考えてみてください。一度に何行印刷するかをどうやって知るのですか?stdin / stdout/stderrで表されていない端末に関する情報が必要です。

端末のエミュレートはQProcessの範囲を超えています。これを行う必要があると本当に確信している場合は、既存のQtベースのターミナルエミュレーターを開始点として使用します(Konsoleなど)。

于 2009-12-05T12:49:19.843 に答える