Название: (РЕШЕНО) Нет (есть на самом деле) прозрачности у главного окна в Android Отправлено: Гурман от Ноябрь 30, 2016, 17:18 Начал писать без всякой надежды... Сделал главное окно приложения для Android прозрачным с помощью android:theme="@android:style/Theme.Translucent" в секции <application...> в AndroidManifest.xml. Для пущей уверенности понаписал
Код: MainWindow w; ................. Пока писал, пришла мысль в голову. Заменил всё в main() на Код: MainWindow w; И заработало! Оставлю всё-таки сообщение тут - наверняка кому-нибудь ещё пригодится. В Сети сколько лазил - такого решения нигде не видел, но видел, что несколько человек упирались. Название: Re: (РЕШЕНО) Нет (есть на самом деле) прозрачности у главного окна в Android Отправлено: Гурман от Декабрь 07, 2016, 16:57 А вот с передачей событий типа тапов и жестов через прозрачную область ничего не получается. :( Пробовал самые разные варианты, делал окно размером меньше десктопа, включал разрешение SYSTEM_ALERT_WINDOW - никак. Пытался сделать View в JNI коде, но не знаю как получить layout ID моего приложения. Не нашёл работающий способ. Возможно для приложения на Qt его нет. В приложениях на чистой Java для приложения создают layout, описанный в XML, затем делают с его помощью overlay window. С Qt-окнами это не заработало. Если кто знает как получить работающее решение для Qt - пишите.
Также не получается сделать окно с изменяемым размером и нормальной перерисовкой при этом. Если просто масштабировать окно под заданный размер с уменьшением, то вокруг него не перерисовывается фон, за который отвечает уже Android. Способ заставить его перерисовать принудительно тоже не нашёл - для этого нужно получить системный View десктопа Android послать сигнал на необходимость перерисовки. Но получить этот View не удалось. Знатоки Android дали понять, что это невозможно. И не получилось сделать окно always on top - все описанные для Android способы перепробовал, флаг Qt::WindowStaysOnTopHint для окна устанавливал. Но постоянно окно на экране не сохраняется, при переключении на другое приложение исчезает. Кстати, атрибуты Qt::WA_NoSystemBackground и Qt::WA_OpaquePaintEvent, а также флаг Qt::FramelessWindowHint на прозрачность окна не влияют. Нужен только флаг Qt::WA_TranslucentBackground, задание цвета палитры и использование прозрачной темы манифесте. При этом установка последнего параметра цвета палитры задаёт полупрозрачность, хорошо получается с уровнем 120. И ещё трюк - если надо, чтобы виджеты по прозрачному окну перемещались или масштабировались, и фон под окном при этом правильно перерисовывался, то нужно сделать такой код для его paintEvent(): Код: void MainWindow::paintEvent(QPaintEvent *) |