Что я пытаюсь: Сделать анимацию при запуске окна.Ширина и высота моего окна зависит от текущего размера экрана, например width: 0.5 * Screen.width
.Так что анимация основана на window.width и высоте окна.
Проблема: Когда я создаю компонент qml в системе с несколькими заголовками, примерно через 10 мс (в app.exec()
) экран меняется.Но анимация продолжает использовать устаревшие значения.Таким образом, анимация прерывается.
Note:
Изменение появляется только в системе с несколькими заголовками, когда приложение запускается на неосновном экране.
Вопрос 1: Как запустить анимацию после полной инициализации (включая инициализацию экрана)?Я не хочу использовать задержку около 10 мс или что-то вроде этого.
Вопрос 2: Почему экран меняется после запуска?Как я понял: QWidget не подвержен этой болезни.
Код, показывающий изменение экрана:
auto object = component.create();
auto main_window = qobject_cast<QQuickWindow*>(object);
qDebug() << "Startup: " << main_window->screen();
QTimer::singleShot(10, [main_window] {
qDebug() << "After delay: " << main_window->screen();
});
app.exec();
Полученный журнал:
Startup: QScreen(0x55add4860bf0, name="DP-1")
After delay: QScreen(0x55add4860d00, name="DVI-D-1")