x
4 декабря 2018 г. 9:55

Тупит QML на примитивном коде - что ему еще надо? (С видео)

qml, окно, координаты, размер

Сделал вот такой минимальный пример:

import QtQuick 2.6
import QtQuick.Window 2.2

Window {
    visible: true
    width: 500
    height: 500

    Rectangle
    {
        x: 0
        y: 0
        anchors.fill: parent
        color: "blue"
    }

    Rectangle
    {
        x: 0
        y: 0
        width: 100
        height: 100
        color: "red"
    }
}

Это просто окно с синим фоном и красным прямоугольником в левом верхнем углу.

Казалось бы, что тут может глючить? А глюки начинаются, когда меняется размер окна. Скриншоты сделать не могу, потому что в момент создания скриншота, окна, похоже, перерисовываются, и скриншот получается с «правильным» содержимым.

Поэтому выкладываю видео: https://youtu.be/0ewK6jrqWms

Видно, что если два раза нажать «Развернуть», то содержимое окна становится неправильным: синяя заливка начинается не сверху окна, а с каким-то вертикальным отступом. Красный квадрат тоже смещен вниз на этот же отступ.

Если двигать окно, то содержимое окна остается неправильным, но в какой-то момент вдруг перерисовывается, и снова становится правильным.

Вопрос: в чем проблема, и как сделать так, чтобы окно всегда отрисовывалось правильно? Это глюк на таком простом примере, а представьте что происходит в реальном проекте с кучей элементов с вычисляемыми размерами и масштабированием.
Возврат 10% от суммы заказа отеля на Booking
Возврат 10% от суммы заказа отеля на Booking
Предлагаем ссылку с 10% возвратом от суммы заказа при бронировании отеля через Booking
7

У меня то же самое. При большем количестве qml-объектов в окне отрисовывается все отлично, без глюков.

0
x

> У меня то же самое


У меня проблема возникает на Qt 5.9.2 и Qt 5.11.2 (инсталляция с qt.io сйта) в Debian Linux 9 Stable (LXDE).


А у тебя в какой среде эта проблема?

0

Я не смогу емко ответить на ваш вопрос (быть может Евгений или кто-нибудь из опытных участников форума подскажет), с данным поведением отрисовки при ресайзе окна столкнулся еще в Qt 5.7, с тех пор вроде ничего не изменилось. Могу лишь сказать, что наблюдал и в Windows и в Ubuntu. Но при разработке интерфейса с добавлением большого количества элементов данная проблема пропадает, поэтому голову этим себе не забиваю.

0
x

Как мы смогли выяснить в обсуждении на ЛОРе, достаточно добавить любую анимацию, и все становится правильным.

https://www.linux.org.ru/forum/development/14650010


0

Попробовал ваш код под Windows на Qt 5.12 - этой проблемы не наблюдаю.

0

Мне кажется тут конфликт anchors.fill: parent и x-y, выберите либо одно, либо другое и вообще есть анкоры, не вижу смысла тут в x-y

0
x

> Мне кажется тут конфликт anchors.fill: parent и x-y, выберите либо одно, либо другое и вообще есть анкоры, не вижу смысла тут в x-y


Тут демонстрируется проблема и на анкорах, и на задании прямых координат. Это Linux-специфичная проблема, возникает на некоторых комбинациях KWin+KDE и Openbox+LXDE.

0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
22 июля 2019 г. 7:26
Pavel K.

Qt - Тест 001. Сигналы и слоты

  • Результат:68баллов,
  • Очки рейтинга-1
o
22 июля 2019 г. 6:26
oksik193

C++ - Тест 001. Первая программа и типы данных

  • Результат:80баллов,
  • Очки рейтинга4
ВД
21 июля 2019 г. 23:33
Влад Долгов

C++ - Тест 001. Первая программа и типы данных

  • Результат:40баллов,
  • Очки рейтинга-8
Последние комментарии
21 июля 2019 г. 6:03
Евгений Легоцкой

да, наверное, 32-х разрядную поддержку уже давно поа было выкинуть. К слову, у вас много проектов под Android? Часто много где вижу вопросы о том, пишет ли кто-то вообще на Qt под мобильные сист…
20 июля 2019 г. 14:41
Андрей Янкович

Очень полезная информация, увы уже выкинул поддержку 32 битных бедняг.
20 июля 2019 г. 9:31
Михаиллл

Вот так qDebug()<<"position:"<<event->scenePos();
20 июля 2019 г. 8:49
Михаиллл

Добрый день. Как можно узнать координату на графической сцене при отпускании клавиши мыши?
Сейчас обсуждают на форуме
22 июля 2019 г. 8:41
BlinCT

Вот только что нашел в инете, у человека такая же ошибка. Вроде бы таже самая проблема https://stackoverflow.com/questions/37633709/how-to-create-qtquick-window-outside-the-main-thread…
22 июля 2019 г. 3:58
Евгений Легоцкой

Добрый день! Нужен совет сообщества по разработке функционала проверки орфографии. Одна из идей - добавить проверку орфографии при наборе текста статей. Полагаю, что наиболее аде…
22 июля 2019 г. 3:01
Евгений Легоцкой

Возможно, если при сохранении файла установить права доступа на файл. Что-то такое должно быть у QFile
22 июля 2019 г. 3:01
Евгений Легоцкой

Я отрисовываю квадрат в его локальной системе координат от верхнего левого угла (-30,-30) до его правого нижнего угла (30,30). Поэтому мне нужно указать размеры объекта через boundingRect()…
20 июля 2019 г. 11:04
Михаиллл

Так и с ресурсами работает QImage image(":/Images/Images/1.png");
Ищу работу?
5,000.00 руб. - 15,000.00 руб.
Дизайнер
Moskovskiy, Moscow, Russia
25,000.00 руб. - 30,000.00 руб.
Разработчик Qt/C++
Barnaul, Altai Krai, Russia

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы

EVILEG
О нас
Услуги
Присоединяйтесь к нам
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB