В настоящее время я пытаюсь создать базовое приложение для 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();
Кто-нибудь может мне помочь, пожалуйста! Я застрял с этой проблемой, и я не могу найти руководство или ответ в Интернете.
Заранее спасибо.
Я только что изменил 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 (). И теперь он рисует на эмуляторе тоже.
Других решений пока нет …