我目前正在尝试使用 Qt C++ 创建一个基本的 Android 应用程序,我正在使用 Qt Creator。我想做一个看起来像黑色背景和绿色圆圈的雷达屏幕的设计。
关于Android和Qt 5.11.1的所有安装步骤我都完成了。
我正在为 armeabi-v7a 创建此应用程序,所以我的工具包也是如此。
我编写了使背景变黑的代码,并在其上绘制了 3 个绿色圆圈。我的代码适用于 Desktop Qt 5.11.1 MinGW 32 位套件。输出是这样的:
但是当我更改套件以打开 armeabi-v7a 的 Android Emulator 时,会发生这种情况:
现在有些事情我不太清楚。我的背景已更改为黑色,但看不到任何圆圈。我知道我的背景 isi 发生了变化,因为如果我不使用我编写的将背景更改为黑色的函数,Windows 工具包中就会发生这种情况:
这发生在 ARM 套件中:
我绘制椭圆的 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/