android - Qt 无法在 Android 模拟器上绘制

标签 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 Emulator 时,会发生这种情况:

enter image description here

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

enter image description here

这发生在 ARM 套件中:

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();
}

我的背景颜色更改器(mutator)函数是这样的,我在 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();

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

提前致谢。

最佳答案

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

关于android - Qt 无法在 Android 模拟器上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51422880/

相关文章:

android - RelativeLayout 问题不适合所有屏幕尺寸

java - 如何在没有 null 的情况下处理链中可能的空值(无模型技巧)?

c++ - 使用 PowerBuilder 10.0 错误从 DLL 调用外部函数

c++ - 条件运算符中的未定义行为

c++ - 如何在不以不同方式创建每个二维 vector 的情况下制作二维 vector 列表?

c++ - 任何使用类字符串与 Md5 一起工作的 C++ 库?

c++ - 尽管有线程,Qt GUI 仍挂起

java - 选择图库中的图像

android - LiveData_LifecycleBoundObserver_LifecycleAdapter 无法转换为 GeneratedAdapter

python - PyQt 代码拆分——设计与功能