功能在Qt中无法正常工作

时间:2012-08-07 12:24:40

标签: android c++ qt qt4

我正在制作一个简单的GUI程序来改变Android手机的bootanimation但是从最近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");
}

单击按钮时会启动此功能,但问题是,这不起作用!其次,您可以在代码中看到更多信息,我使用了textBrowser来显示用户最新进行的重新安装分区等,而lineEdit_6是用户将粘贴的lineEdit小部件bootanimation.zip的路径。所以我的问题是,当我单击按钮时,只显示

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

我认为上面的一切都被忽略了,我不知道为什么?谁能给我一些暗示我缺少的东西?

2 个答案:

答案 0 :(得分:1)

在这里,您要混合两种不同的方法来为QProcess提供参数:

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

First method在一个QString中提供程序名称和参数。

Second method在QStringList中提供参数。

您正尝试在程序名称字符串中提供一个参数(“push”)。当在QStringList中给出其他参数时,它不起作用。最后一个参数在开头也包含可疑的空间,虽然我不知道它是否会导致问题。试试这个:

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

而path6变量可能应该是QString而不是QStringList。

答案 1 :(得分:0)

Ui要求eventloop刷新自己。当您在一个函数调用中执行所有更改时,只有内部属性更改,并且gui本身不会重新绘制。在每个QCoreApplication::processEvents();

之后立即使用ui->textBrowser->setText(...);