我目前正在尝试使用Qt C ++创建基本的Android应用程序,并且正在使用Qt Creator。我想设计一个看起来像雷达屏幕的黑色背景和绿色圆圈。
我已经完成了有关Android和Qt 5.11.1的安装的所有步骤。
我正在为armeabi-v7a创建此应用程序,所以我的工具包也是如此。
我编写了使背景变黑的代码,并在其上绘制了3个绿色圆圈。对于Desktop Qt 5.11.1 MinGW 32位套件,我的代码工作正常。输出是这样的:
但是当我更换套件以打开armeabi-v7a的Android仿真器时,会发生这种情况:
现在有些事情我还不清楚。我的背景已更改为黑色,但看不到任何圆圈。我知道我的背景已更改,因为如果我不使用编写的功能将背景更改为黑色,则会在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();
有人可以帮助我吗?我被这个问题困扰,在互联网上找不到任何指南或答案。
谢谢。
答案 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();
语句。现在它也正在模拟器上绘制。