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();
语句。现在它也在模拟器上绘图了。
我目前正在尝试使用 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();
语句。现在它也在模拟器上绘图了。