-1

Androidフォンのブートアニメーションを変更するための簡単なGUIプログラムを作成していますが、過去4日間から問題に直面しており、理由がわかりません。ここに私のコードがあります

void MainWindow::bootanim1()
{   
    QProcess rootboot;

    QStringList path6,boottarget;
    path6<<ui->lineEdit_6->text();

    boottarget<<path6<<" /system/media";
    ui->textBrowser->clear();
    ui->textBrowser->setText("Remounting partitions...");
    rootboot.start("bbin\\adb shell su -c \"busybox mount -o remount,rw /system\"");
    rootboot.waitForFinished();
    ui->textBrowser->setText("\nInstalling bootanimation.zip");
    rootboot.start("bbin\\adb push ",boottarget);
    rootboot.waitForFinished();
    ui->textBrowser->setText("\nBootanimation has been changed! Try shutting down your phone to see new bootanimation");
}

この関数はボタンをクリックすると起動しますが、私の問題は、これが機能していないことです! 2 つ目は、より情報を提供するために、textBrowserパーティションの再マウントなどの状況をユーザーに表示するために を使用し、ユーザーが bootanimation.zip のパスを貼り付けるウィジェットであるlineEdit_6ことをコードで確認できます。lineEditだから私の問題は、ボタンをクリックするとこれだけが表示されることです

Bootanimation has been changed! Try shutting down your phone to see new bootanimation

そして、その上のすべてがスキップされていると思いますが、理由はわかりませんか? 私が欠けているものについて誰かが私にヒントを与えることができますか?

4

2 に答える 2

1

ここでは、2つの異なるメソッドを組み合わせて、QProcessに引数を指定しています。

boottarget<<path6<<" /system/media";
rootboot.start("bbin\\adb push ",boottarget);

最初のメソッドは、1つのQStringでプログラム名と引数を提供します。

2番目のメソッドは、QStringListの引数を指定します。

プログラム名の文字列に1つの引数( "push")を指定しようとしています。他の引数がQStringListで指定されている場合は、機能しません。最後の引数にも最初に疑わしいスペースが含まれていますが、それが問題を引き起こすかどうかはわかりません。代わりにこれを試してください:

QStringList args;
args << "push" << path6 << "/system/media";
rootboot.start("bbin\\adb", args);

また、path6変数はおそらくQStringListではなくQStringである必要があります。

于 2012-08-07T14:52:56.423 に答える
0

Ui は、それ自体を更新するために eventloop を必要とします。1 回の関数呼び出しですべての変更を行うと、内部プロパティのみが変更され、gui 自体は再描画されません。QCoreApplication::processEvents();それぞれの直後に使用ui->textBrowser->setText(...);

于 2012-08-07T13:54:01.273 に答える