Qt 无法在 Android 模拟器上绘制

Qt Can't Draw At Android Emulator

我目前正在尝试使用 Qt C++ 创建一个 Android 的基本应用程序,我正在使用 Qt Creator。我想做一个看起来像黑色背景和绿色圆圈的雷达屏幕的设计。

我已经完成了关于 Android 和 Qt 5.11.1 的所有安装步骤。

我正在为 armeabi-v7a 创建这个应用程序,所以我的套件也是。

我已经编写了使背景变黑的代码,并在上面画了 3 个绿色圆圈。我的代码适用于 Desktop Qt 5.11.1 MinGW 32 位套件。输出是这样的:

但是当我更改套件以打开 armeabi-v7a 的 Android 模拟器时,会发生这种情况:

现在有些事情我不太清楚。我的背景已更改为黑色,但看不到任何圆圈。我知道我的背景 isi 发生了变化,因为如果我不使用我编写的将背景更改为黑色的函数,这种情况会发生在 windows kit:

这发生在手臂套件中:

我画椭圆的paintEvent函数是这样的:

void MainWindow::paintEvent(QPaintEvent *event) {
    QPainter painterObj(this);
    painterObj.setPen(QPen(Qt::green, 2, Qt::SolidLine, Qt::RoundCap));

    painterObj.save();
    painterObj.drawEllipse(0, 0, 318, 512);
    painterObj.restore();

    painterObj.save();
    painterObj.drawEllipse(53, 86, 212, 340);
    painterObj.restore();

    painterObj.save();
    painterObj.drawEllipse(106, 172, 106, 168);
    painterObj.restore();
}

我的背景颜色变换函数是这样的,我在ui->setupUi(this);之后调用它。 :

void MainWindow::setBackGroundColorToBlack() {
    QPalette pal = palette();

    // set black background
    pal.setColor(QPalette::Background, Qt::black);
    this->setAutoFillBackground(true);
    this->setPalette(pal);
}

这些函数在这样的头文件中受到保护:

protected:
void paintEvent(QPaintEvent *e);
void setBackGroundColorToBlack();

谁能帮帮我?我被这个问题困住了,我在互联网上找不到任何 guide 或答案。

提前致谢。

我刚刚像这样更改了 paintEvent:

void MainWindow::paintEvent(QPaintEvent *event) {
setUpdatesEnabled(false);
QPainter painterObj;
painterObj.begin(this);
painterObj.setPen(QPen(Qt::green, 2, Qt::SolidLine, Qt::RoundCap));
painterObj.drawEllipse(0, 0, 318, 456);
painterObj.drawEllipse(53, 76, 212, 304);

painterObj.drawEllipse(106, 152, 106, 152);

painterObj.end();

}

并在 setBackGroundToBlack() 函数的末尾添加了一条 update(); 语句。现在它也在模拟器上绘图了。