Qt не может рисовать в эмуляторе Android

В настоящее время я пытаюсь создать базовое приложение для Android с помощью Qt C ++ и использую Qt Creator. Я хочу сделать дизайн, который выглядит как экран радара с черным фоном и зелеными кружками.

Я проделал все шаги по установке Android и Qt 5.11.1.

Я создаю это приложение для armeabi-v7a, так что мой комплект тоже.

Я написал код, делающий фон черным, и нарисовал на нем 3 зеленых кружка. Мой код отлично работает для 32-битного набора Desktop Qt 5.11.1 MinGW. вывод выглядит так:

введите описание изображения здесь

Но когда я меняю комплект, чтобы открыть эмулятор Android для armeabi-v7a, это происходит:

введите описание изображения здесь

Сейчас есть кое-что, чего я точно не знаю. Мой фон был изменен на черный, но я не вижу кругов. Я знаю, что мой фон isi изменился, потому что если я не использую написанную мной функцию, чтобы изменить фон на черный, это происходит в наборе Windows:

введите описание изображения здесь

И это происходит в комплекте с оружием:

введите описание изображения здесь

Моя функция 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();

Кто-нибудь может мне помочь, пожалуйста! Я застрял с этой проблемой, и я не могу найти руководство или ответ в Интернете.

Заранее спасибо.

3

Решение

Я только что изменил 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();

}

И добавил update(); оператор в конце функции setBackGroundToBlack (). И теперь он рисует на эмуляторе тоже.

0

Другие решения

Других решений пока нет …