Qt无法在Android模拟器上绘制

时间:2018-07-19 12:36:37

标签: android c++ qt android-emulator

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

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

我正在为armeabi-v7a创建此应用程序,所以我的工具包也是如此。

我编写了使背景变黑的代码,并在其上绘制了3个绿色圆圈。对于Desktop Qt 5.11.1 MinGW 32位套件,我的代码工作正常。输出是这样的:

enter image description here

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

enter image description here

现在有些事情我还不清楚。我的背景已更改为黑色,但看不到任何圆圈。我知道我的背景已更改,因为如果我不使用编写的功能将背景更改为黑色,则会在Windows kit中发生这种情况:

enter image description here

这发生在手臂套件中

enter image description here

我绘制椭圆的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();

有人可以帮助我吗?我被这个问题困扰,在互联网上找不到任何指南或答案。

谢谢。

1 个答案:

答案 0 :(得分:0)

我刚刚像这样更改了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();语句。现在它也正在模拟器上绘制。